Основы офисного программирования и язык VBA

       

Моделирование ввода с клавиатуры: оператор SendKeys


Посылает один или несколько кодов символов в текущее активное окно, как если бы соответствующие клавиши были нажаты.

Синтаксис:

SendKeys строка[, режим-ожидания]

Параметр строка - строковое выражение, задающее последовательность посылаемых символов. Необязательный параметр режим-ожидания - выражение с булевым значением. Если оно False (по умолчанию), управление возвращается в процедуру сразу же после посылки кодов; True - посланная последовательность кодов должна быть обработана, прежде чем управление возвратится в процедуру.

Большинство символов, набираемых на клавиатуре, входят в строку непосредственно. Например, чтобы послать последовательность из трех символов Y, E и S, возьмите в качестве строки " YES". Символы: +, ^, %, ~, скобки и некоторые другие следует помещать в фигурные скобки. Например, чтобы послать +, в параметр строка нужно поместить {+}. Для посылки кодов клавиш, не отображаемых на экране, имеются специальные коды. Некоторые представлены в таблице, остальные можно найти с помощью подсказки:

Таблица 7.2. Коды клавиш, не отображаемых на экране

КлавишаКод
BACKSPACE{BS}
BREAK{BREAK}
CAPS LOCK{CAPSLOCK}
DEL{DEL}
DOWN ARROW{DOWN}
END{END}
ENTER{ENTER} или ~
ESC{ESC}
HOME{HOME}
INS{INS}
LEFT ARROW{LEFT}
PAGE DOWN{PGDN}
PAGE UP{PGUP}
RIGHT ARROW{RIGHT}
TAB{TAB}
UP ARROW{UP}
Fn{Fn} (n=1,…, 12)

Чтобы послать комбинацию клавиш, для Shift, Ctrl и Alt используются следующие коды (В примере используется документ DocTwo7:

Shift - + Ctrl ^ Alt %

Пример:

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

Public Sub OpenDocWithPassword() 'Открытие документа с паролем SendKeys "+^" 'Переключение раскладки клавиатуры SendKeys "don" & "{'}" & "t know", False 'пароль "don't know" Documents.Open "e:\O2000\CD2000\Ch7\DocTwo7.doc" Documents("DocTwo7.doc").Activate

End Sub

Обратите внимание на два момента:

  • Прежде, чем послать сам пароль, происходит переключение клавиатуры на другую раскладку, для чего используется комбинация символов "Shift + Ctrl".
  • Символы клавиатуры посылаются в буфер ввода еще до того, как они потребуются. Если бы оператор Open предшествовал оператору SendKeys, то окно ввода пароля появилось бы до выполнения этого оператора. В данном же случае при открытии документа пароль автоматически появится в окне ввода, так что останется только щелкнуть по кнопке OK.



Содержание раздела