Excel VBA SendKeys
В этой статье мы увидим план Excel VBA SendKeys. Вы когда-нибудь задумывались о создании программы, которая автоматически сохраняет ваш рабочий лист, и вам не нужно нажимать кнопку «Ctrl + S» или «Сохранить в Excel» для этого? Это кажется фантастикой, верно? Однако это можно сделать. В VBA есть оператор команды, называемый SendKeys, который позволяет отправлять нажатия клавиш в виде команды в приложение так же, как если бы вы использовали клавиатуру для выполнения задачи. (Пример. Сохранение файла. Для сохранения файла вы нажимаете Ctrl + S на клавиатуре). Рекомендуется использовать SendKeys в качестве последнего параметра при автоматизации любой задачи. Причина этого в том, что, как мы уже обсуждали, SendKeys отправляет нажатия клавиш приложению, которое в данный момент активно. Что если у вас есть активное окно приложения во время выполнения кода, в котором вы не хотите, чтобы изменения произошли? Это даст неожиданные результаты, верно? Это единственная причина, мы должны использовать SendKeys в качестве последнего варианта при автоматизации вещей. Однако его можно использовать для небольшой автоматизации, когда никакая другая прикладная среда не будет мешать той, в которую вы хотели внести изменения.
Синтаксис метода SendKeys:
SendKeys(String As String, (Wait))
Где,
Первый аргумент «String As String» указывает комбинации клавиш, которые вы хотите использовать в программе (например, комбинация клавиш Ctrl + S).
Wait будет необязательным параметром, который принимает логические значения TRUE и FALSE. Если ожидание имеет значение ИСТИНА, это означает, что система будет ожидать обработки ключей, а затем перейдет к следующей строке и скомпилирует / запустит то же самое. Если значение ожидания равно ЛОЖЬ (можно оставить пустым), то система не будет ждать обработки ключей и продолжит выполнение всего кода.
Некоторые методы используют, которые вы можете комбинировать нажатия клавиш с Ctrl, Shift или Alt. Давайте посмотрим, как мы можем это сделать. Ниже приведена таблица, в которой указаны комбинации нажатий клавиш SendKeys с помощью Ctrl, Shift и Alt:
Ключ, который нужно сочетать с | Оператор, который будет использоваться перед клавишами для комбинации |
сдвиг | + (Клавиатура плюс знак) |
Ctrl | (Знак оператора каретки) |
Alt | % (Знак процента) |
Ну, что это значит? Это означает, что если вы хотите использовать комбинацию клавиш в качестве кода Ctrl + S в коде, вы можете использовать метод SendKeys и сделать это с SendKeys, затем оператором Caret (^) для Ctrl и затем «s». Это сохранит текущий лист в вашем файле Excel.
Как использовать метод SendKeys в Excel VBA?
Мы узнаем, как использовать метод SendKeys в Excel с помощью кода VBA.
Вы можете скачать этот шаблон Excel VBA SendKeys здесь - Шаблон Excel VBA SendKeysVBA SendKeys - Пример № 1
Давайте рассмотрим несколько простых примеров, которые позволят нам глубже погрузиться в работу команды VBA SendKeys.
В этом первом примере мы увидим очень простую автоматизацию, которая автоматически сохраняет текущий открытый файл Excel. Вам не нужно нажимать кнопку Сохранить или Ctrl + S, чтобы сохранить файл. Следуйте инструкциям ниже для достижения результата.
Шаг 1. Откройте модуль на вкладке меню «Вставка», как показано ниже.
Шаг 2: Определите новую подпроцедуру, которая может содержать ваш макрос.
Код:
Sub Example_1 () End Sub
Шаг 3: Теперь, чтобы сохранить любой файл, у вас есть комбинация клавиш клавиатуры в виде Ctrl + S. Чтобы преобразовать это в код, мы можем использовать оператор каретки (^), а затем ключевое слово «s» в качестве аргумента оператора SendKeys.
Код:
Sub Example_1 () Application.SendKeys ("s") End Sub
Здесь ключевое слово Application указывает приложение, в которое мы посылаем нажатия клавиш (в данном случае приложение Excel). «S» в скобках указывает на аналогичную операцию клавиатуры Ctrl + S.
Шаг 4: Запустите этот код, нажав кнопку «Выполнить» или нажав клавишу F5.
После успешного запуска этого кода ваш файл будет сохранен.
VBA SendKeys - Пример № 2
Теперь мы увидим, как закрыть текущее приложение, отправив программные клавиши через код макроса с помощью метода SendKeys. Следуйте инструкциям ниже:
Шаг 1: Напишите подпроцедуру, которая может держать ваш макрос под модулем.
Код:
Sub Example_2 () End Sub
Шаг 2: Используйте метод Application.SendKeys для передачи программных клавиш клавиатуры в приложение. Поскольку текущую панель VBA можно закрыть с помощью сочетания клавиш Alt + Q, мы можем использовать «% q» под макросом.
Код:
Sub Example_2 () Application.SendKeys ("% q") End Sub
Шаг 3: Нажмите кнопку Run или F5, чтобы запустить этот код. Как только вы запустите этот код, текущий редактор Visual Basic закроется, и вы перейдете к файлу Excel.
VBA SendKeys - Пример № 3
Теперь мы собираемся написать код, который автоматически открывает Блокнот и автоматически пишет текст в нем. Смотрите скриншот ниже:
Шаг 1: Напишите подпроцедуру, которая может держать ваш макрос под модулем.
Код:
Sub Example_3 () End Sub
Оболочка вызова позволяет системе открывать приложение. Путь, где находится Notepad.exe. vbNormalFocus - это необязательный аргумент, который указывает на фокус на открытии и восстановлении приложения до его исходного размера и положения.
Шаг 2: Используйте Call и Sendkeys в комбинации, чтобы система могла добавить текст в Блокнот.
Код:
Sub Example_3 () Вызовите оболочку («C: \ Windows \ System32 \ Notepad.exe», vbNormalFocus) End Sub
Шаг 3: Здесь мы добавляем текст «Здравствуйте, VBA!» С помощью SendKeys в Блокнот. True указывает время ожидания для команды SendKeys.
Код:
Sub Example_3 () Call Shell ("C: \ Windows \ System32 \ Notepad.exe", vbNormalFocus) Вызов SendKeys ("Привет VBA!", True) End Sub
Шаг 4: Запустите этот код, нажав клавишу F5 или нажав кнопку «Выполнить».
Вот как мы можем использовать метод SendKeys для автоматизации приложений через макрос VBA.
То, что нужно запомнить
- Будьте очень осторожны при использовании SendKeys, так как это может привести к неожиданным результатам, если у вас открыто несколько приложений.
- Вы можете использовать SendKeys для автоматизации небольших задач, таких как сохранение файла Excel, закрытие файла Excel и т. Д.
- Используйте метод SendKeys как последний вариант, когда вы пытаетесь автоматизировать вещи.
Рекомендуемая статья
Это руководство по VBA SendKeys. Здесь мы обсудим, как использовать метод SendKeys в Excel VBA вместе с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи -
- VBA While Loop (Примеры с шаблоном Excel)
- VBA Environ | Шаблоны Excel
- Поиск цели VBA (пример)
- Как изменить имя рабочего листа в Excel VBA?