2014-12-18 2 views
-1

Я использую Sendkeys (Excel VBA) для автоматизации модификации некоторых файлов PDF.Как эффективно выполнять Sendkeys

Короче говоря, я открываю pdf-файл с помощью команды Acrobat by Shell и ставил команду wait.Wait (Now + TimeValue («0: 00: 1») между Sendkeys, чтобы гарантировать, что предыдущие Sendkeys были обработаны полностью.

Мой вопрос: в общем, 1 секунда достаточно, но иногда это не работает. Конечно, я могу изменить время ожидания до 2 секунд. Но время выполнения значительно увеличится.

Есть ли способ проверить состояние Acrobat и эффективно выполнить Sendkeys?

+2

Да, не используя SendKeys. Используйте .dll, чтобы автоматизировать его. –

+0

Вы наступаете на опасные воды с помощью SendKeys, это очень рискованный метод, который можно использовать в лучшие моменты времени, и его следует избегать, если это вообще возможно. Если у вас есть библиотека/dll, которая позволяет вам проверить состояние Acrobat Reader, скорее всего, вы уже в позиции, где SendKeys можно заменить чем-то гораздо более безопасным. – Aiken

+0

Да, Sendkeys не является хорошим решением, но это последнее, что я знаю. На самом деле есть текстовое поле со ссылкой на веб-страницу внизу каждой страницы моего файла pdf. Я хочу, чтобы удалить ссылку и текстовое поле. Я могу ссылаться на библиотеку типов Acrobat, чтобы удалить ссылку. Но у библиотеки типов Acrobat нет метода, который можно использовать для удаления текстового поля. Я попытался использовать regasm.exe для регистрации pdfclown.dll, который является инструментом редактирования pdf, но не удался. Теперь попробуйте найти соответствующую dll или любое другое решение. –

ответ

0

Вы могли бы попробовать что-то вроде этого:

Application.SendKeys "%fx", True 
+1

Я попробовал Sendkeys «% fx», True и Application.Sendkeys «% fx», True. Оба имеют одинаковые результаты. Когда время не подходит, сообщение от последующих Sendkeys отбрасывается. –

+0

«% fx» находится прямо у стены. Я предположил, что вы будете использовать код для ключей, которые вы хотите отправить. Это может быть проблема? Кроме того, каждая строка SendKeys должна включать только один ключ и «, True», конечно. –

+0

Спасибо Скуратовскому. Я знаю, что% fx - это только пример. Когда я сказал Sendkeys «% fx», True, я имею в виду Sendkeys «mykey», True. Параметр «Правда» не может решить мою проблему. –

Смежные вопросы