17

Доступ к тексту в буфере обмена в 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

762 поста14.9K подписчика

Правила сообщества

1. Не нарушать правила Пикабу

2. Публиковать посты соответствующие тематике сообщества

3. Проявлять уважение к пользователям

4. Не допускается публикация постов с вопросами, ответы на которые легко найти с помощью любого поискового сайта.

По интересующим вопросам можно обратиться к автору поста схожей тематики, либо к пользователям в комментариях


Важно - сообщество призвано помочь, а не постебаться над постами авторов! Помните, не все обладают 100 процентными знаниями и навыками работы с Office. Хотя вы и можете написать, что вы знали об описываемом приёме раньше, пост неинтересный и т.п. и т.д., просьба воздержаться от подобных комментариев, вместо этого предложите способ лучше, либо дополните его своей полезной информацией и вам будут благодарны пользователи.

Утверждения вроде "пост - отстой", это оскорбление автора и будет наказываться баном.

Вы смотрите срез комментариев. Показать все
1
Автор поста оценил этот комментарий
Безопасность по шапке не даст?)
Какую задачу-то решаете?
раскрыть ветку (10)
1
Автор поста оценил этот комментарий
Безопасность по шапке не даст?)

vbs официально можно. А вот autoIt уже нельзя)


Какую задачу-то решаете?

Там форма открывается по рандомным координатам с фокусом на рандомном элементе управления, причём форма модальная и доступа к ней через апи SAPа изнутри нет. Поэтому навигация только через SendKeys "вслепую". В единственный textedit (там ещё списки и куча кнопок) нужно вставить текст и нажать кнопку. Вся эта хрень нужна чтобы определить, где сейчас фокус ввода: скрипт пытается ввести заранее установленный текст (больше его, слава Ктулху, ввести некуда), потом копирует в буфер содержимое и сверяет с введённым. Если совпало - значит фокус там где надо. Установка буфера нужна для многократного запуска. Без неё можно было бы обойтись, например, использованием текущего времени в качестве шаблона, но мне было просто интересно возможно ли это в принципе. А так-то, vbs вообще не мой профиль, просто помочь попросили.

раскрыть ветку (9)
1
Автор поста оценил этот комментарий

Как шутят сами сотрудники, "кто работал в SAP, тот в цирке не смеётся".

раскрыть ветку (2)
0
Автор поста оценил этот комментарий

цитата забавная. но по сути неверная. надо "кто не читал документацию и пытался работать"

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Не берусь оценивать уровень компетенции сотрудников, поскольку сам там не работаю.

0
Автор поста оценил этот комментарий

А что за транзакция, и какой должен быть результат?

раскрыть ветку (5)
0
Автор поста оценил этот комментарий

Фиг его знает что за транзакция, даже не хочу вникать в эту муть, работает и хорошо. Окно модальное при сохранении/экспорте. Судя по тому, что оно визуально отличается от окон в других транзакциях - какой-то результат "творчества" их айтишников.

раскрыть ветку (4)
0
Автор поста оценил этот комментарий

вы вместо нормального экспорта на абапе прикручиваете к одному костылю другой, а виноват сап :)

раскрыть ветку (3)
1
Автор поста оценил этот комментарий

У пользователей, и соответственно у меня, нет доступа к abap'у, автоматизация только через vbs. Что дали, с тем и работают. Понятно, что не разработчики сап, а внедренцы или собственные программеры сделали такое говно окно, к которому нет нормального доступа. Это извращение с буфером появилось не от хорошей жизни.

раскрыть ветку (2)
1
Автор поста оценил этот комментарий
У пользователей ... нет доступа к abap'у
и слава богу
ЗЫ но мне нравятся такие конторы. покупают систему с ценником вместе с железом в несколько лямоевров, и жмутся на найм и обучение нормальных специалистов.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Ну так они ж не для работы его покупают, а для имиджа и капитализации холдинга, чтобы "как у всех чотких пацанов". Лет пятнадцать назад со стороны наблюдал, как в одном из подразделений Лукойла сап внедряли вместо 1с (в принципе их всё устраивало, но в москве решили, что нет). Бухгалтера через полгода внедрения волосы на жопе рвали, когда увидели, как у них основные средства начали рандомно троиться, а ответственные внедренцы свалили в отпуск.

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества