Оператор SendKeys

Отправляет один или несколько кодов клавиш в активное окно так, если бы клавиши были нажаты на клавиатуре.

Синтаксис

SendKeys string, [ wait ]


Синтаксис оператора SendKeys содержит следующие именованные аргументы:

Part Описание
строка Обязательный аргумент. Строковое выражение, определяющие отправляемые коды клавиш.
wait Не обязательно указывать. Логическое значение определяющее режим ожидания. Если значение равно False (по умолчанию), контроль возвращается процедуре сразу после отправки кода клавиш. Если значение равно True, коды клавиш необходимо обработать перед возвратом контроля процедуре.

Примечания

Каждая клавиша представлена одним или несколькими символами. Чтобы указать один символ клавиатуры, используйте сам символ. Например, чтобы представить букву A, используйте "A" для аргумента string. Чтобы представить несколько символов, добавьте дополнительный символ к предыдущему. Чтобы представить буквы A, B и C, используйте "ABC" для аргумента string.

Знак плюс (+), символ крышки (^), знак процента (%), тильда (~) и круглые скобки ( ) обладают специальным значением для SendKeys. Чтобы указать один из этих символов, заключите их в фигурные скобки ({}). Например, чтобы указать знак плюса, используйте строку {+}.

Квадратные скобки ([ ]) не обладают специальным значением для SendKeys, но их также нужно заключать в фигурные скобки. В других приложениях квадратные скобки обладают специальным значением, которое может быть важным при динамическом обмене данными (DDE). Чтобы указать символы фигурных скобок, используйте {{} и {}}.

Чтобы задать символы, которые не отображаются при нажатии клавиш ВВОД или TAB, а также клавиш, представляющих действия, а не символы, используйте коды, представленные в таблице ниже.

Ключ Код
BACKSPACE {BACKSPACE}, {BS} или {BKSP}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
DEL или DELETE {DELETE} или {DEL}
СТРЕЛКА ВНИЗ {DOWN}
END {END}
ВВОД {ENTER} или ~
ESC {ESC}
HELP {HELP}
HOME {HOME}
INS или INSERT {INSERT} или {INS}
СТРЕЛКА ВЛЕВО {LEFT}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
PRINT SCREEN {PRTSC}
СТРЕЛКА ВПРАВО {RIGHT}
SCROLL LOCK {SCROLLLOCK}
TAB {TAB}
СТРЕЛКА ВВЕРХ {UP}
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
F13 {F13}
F14 {F14}
F15 {F15}
F16 {F16}

Чтобы указать сочетание клавиш с SHIFT, CTRL и ALT, добавьте перед кодом клавиши один или несколько следующих кодов:

Ключ Код
SHIFT +
CTRL ^
ALT %

Чтобы указать, что клавиши SHIFT, CTRL и ALT в любом сочетании нужно удерживать, нажимая несколько других клавиш, заключите код для последних клавиш в скобки. Например, чтобы указать, что нужно удерживать клавишу SHIFT, нажимая клавиши E и C, введите +(EC).

Для указания повторяющихся клавиш используйте форму {key number}. Необходимо добавить пробел между key и number. Например, {LEFT 42} означает нажатие клавиши СТРЕЛКА ВЛЕВО 42 раза, а {h 10} означает нажатие клавиши H 10 раз.

Примечание

Невозможно использовать SendKeys для отправки кодов клавиш в приложение, не предназначенное для работы в операционных системах Microsoft Windows или Mac OS. Sendkeys также не может отправлять код клавиши PRINT SCREEN {PRTSC} в приложения.

Пример

В этом примере функция Shell используется для запуска приложения "Калькулятор Windows". Здесь оператор SendKeys отправляет коды клавиш для добавления некоторых чисел и закрытия калькулятора. Чтобы воспользоваться примером, вставьте его в процедуру и выполните ее. Так как метод AppActivate активирует окно калькулятора, вы не можете выполнять код пошагово.

На компьютере с Mac OS используйте приложение для Mac OS, которое принимает данные от клавиатуры, а не "Калькулятор Windows".

Dim ReturnValue, I 
ReturnValue = Shell("CALC.EXE", 1)    ' Run Calculator. 
AppActivate ReturnValue     ' Activate the Calculator. 
For I = 1 To 100    ' Set up counting loop. 
    SendKeys I & "{+}", True    ' Send keystrokes to Calculator 
Next I    ' to add each value of I. 
SendKeys "=", True    ' Get grand total. 
SendKeys "%{F4}", True    ' Send ALT+F4 to close Calculator. 

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.