Найти в Дзене
xxlanalytics

Как работает оператор Sendkeys в VBA Excel

Оглавление

В вашей жизни наверняка встречались ситуации, когда приходилось подолгу и часто нажимать одну и ту же клавишу при выполнении тех или иных действий или их подтверждения. Для меня, в своё время, оператор Sendkeys стал настоящим открытием. С его помощью можно создать эмуляцию нажатия той или иной клавиши, а также их сочетаний как в рамках Excel, так и вне его.

Синтаксис оператора

Сам по себе оператор довольно прост и выглядит следующим образом:

Application.SendKeys ("клавиша/сочетание клавиш")

"клавиша/сочетание клавиш" - это те клавиши, сочетание которых вы хотите эмулировать, т.е. сделать так чтобы макрос нажали их за вас. Более подробно о них расскажу ниже

"Клавиша/сочетание клавиш"

Клавиши/сочетания клавиш прописываются в кавычках (""), при этом в одни кавычки можно поставить несколько символов.

Например, нам нужно, чтобы макрос написал слово привет, тогда операция будет выглядеть так:

Application.SendKeys ("привет")

Стоит обратить внимание: при вводе текста язык ввода будет соответствовать той раскладке, которая установлена на клавиатуре

То, как прописывать "специальные" клавиши показано в таблице ниже:

Кода "специальных" клавишь
Кода "специальных" клавишь

Например, если необходимо ввести то же слово "привет" в ячейку Excel, а потом нажать Enter, чтобы текст записался, то оператор будет выглядеть следующим образом:

Application.SendKeys ("привет~") или Application.SendKeys ("привет{ENTER}")

Shift, Ctrl, Alt

Специально выделил эти 3 клавиши, т.к. на их сочетании завязано большинство команд в Windows(да и не только) с клавиатуры.

Нажатие/зажатие этих клавиш в коде оператора прописывается следующим образом:

Нажатие Shift, Ctrl, Alt
Нажатие Shift, Ctrl, Alt

При этом, постановка кода относится только к тому знаку, перед которым проставлен код клавиши.

Если в примере выше поставить знак "+" (имитация нажатия клавиши Shift)

Application.SendKeys ("+привет~")

То результатом будет Привет

Множественные нажатия

В случае, когда необходимо нажать клавишу больше, чем один раз, необходимо каждую подобную клавишу заключать в фигурные скобки ({}) и указывать количество нажатий. Например мы хотим, чтобы буква "е" повторилась три раза при отработке макроса. Для этого вносим изменения в макрос выше:

Application.SendKeys ("+прив{е 3}т~")

Результатом отработки будет Привееет

Про то, как работает макрос, я рассказываю в видео: https://rutube.ru/video/a1903bf1f2d0cc9ac5c201684a48e9da/