Доступ к тексту в буфере обмена в vba/vbs
Попросили помочь со скриптами vbs. Благодаря криворукости разработчиков специфическому поведению SAP, решением проблемы было использование буфера обмена. С чтением содержимого всё просто, а вот с записью уже не так тривиально. Причём, сторонний софт туда не скопировать и не скомпилировать - огорожено. Так что пользуют "васик".
Вобщем, нарыл вот такое. Кому надо, пользуйтесь:
Функция:
Function ClipBoard(input)
If IsNull(input) Then
ClipBoard = CreateObject("HTMLFile").parentWindow.clipboardData.getData("Text")
If IsNull(ClipBoard) Then ClipBoard = ""
Else
CreateObject("WScript.Shell").Run "mshta.exe javascript:eval(""document.parentWindow.clipboardData.setData('text','" & Replace(Replace(Replace(input, "'", "\\u0027"), """","\\u0022"),Chr(13),"\\r\\n") & "');window.close()"")", 0,True
End If
End Function
Использование:
Получение текста:
result = ClipBoard(null)
Установка текста:
ClipBoard("новый текст")
Если установка не нужна, можно функцию не использовать, хватит простой строки:
result = CreateObject("HTMLFile").parentWindow.clipboardData.getData("Text")
Для установки через setData такой способ не подходит (М$ пофиксили возможность зачем-то), посему приходится извращаться с помощью HTA.
MS, Libreoffice & Google docs
715 постов15K подписчиков
Правила сообщества
1. Не нарушать правила Пикабу
2. Публиковать посты соответствующие тематике сообщества
3. Проявлять уважение к пользователям
4. Не допускается публикация постов с вопросами, ответы на которые легко найти с помощью любого поискового сайта.
По интересующим вопросам можно обратиться к автору поста схожей тематики, либо к пользователям в комментариях
Важно - сообщество призвано помочь, а не постебаться над постами авторов! Помните, не все обладают 100 процентными знаниями и навыками работы с Office. Хотя вы и можете написать, что вы знали об описываемом приёме раньше, пост неинтересный и т.п. и т.д., просьба воздержаться от подобных комментариев, вместо этого предложите способ лучше, либо дополните его своей полезной информацией и вам будут благодарны пользователи.
Утверждения вроде "пост - отстой", это оскорбление автора и будет наказываться баном.