Оболочка VBA

В этом руководстве будет показано, как использовать функцию оболочки VBA.

Мы можем использовать VBA Оболочка функция для вызова отдельной исполняемой программы из программы VBA. Например, если нам нужно открыть Блокнот из Excel, мы можем использовать для этого функцию VBA Shell. Если вызов оболочки завершается успешно, она возвращает значение Windows TaskID вызванной программы. Если вызов Shell терпит неудачу, он возвращает ноль.

Оболочка имеет два входных параметра: обязательный путь для программы, которую нужно вызвать, и необязательный стиль окна значение, управляющее стилем окна, в котором будет запущена программа. В путь значение может включать путь / каталог программы и аргументы.

Вызов оболочки

Этот код может быть частью макроса для запуска Блокнот используя Вызов VBA команда для вызова Оболочка функция.

1 Вызов Shell ("блокнот", vbNormalFocus)

Например:

Shell Подождите

Мы можем использовать VBA Ждать команда отложить вызов Оболочка команду на определенный период времени.

12 Application.Wait (сейчас + TimeValue ("00:00:05"))Вызов Shell ("блокнот", vbNormalFocus)

Следовательно, до вызова команды Shell пройдет 5 секунд.

Возврат ошибки из функции оболочки

Если у нас есть ошибка в нашем коде при вызове Оболочка функция, и будет возвращена ошибка, и наш код перейдет в режим отладки.

Например, в этом макросе мы неправильно написали «блокнот».

1 Оболочка вызова ("блокнот", vbNormalFocus)

Результатом выполнения этого макроса будет:

Программирование на VBA | Генератор кода действительно работает для вас!

Открыть существующий файл с помощью оболочки

Если у нас есть конкретный файл, который мы хотим открыть с помощью Оболочка , мы можем включить имя файла в наш код.

1 Вызов оболочки ("Notepad.exe C: \ demo \ shell_test.txt", vbNormalFocus)

Если мы напишем имя файла неправильно, файл не будет найден, и появится окно сообщения с вопросом, хотим ли мы создать новый файл.

Параметры, используемые функцией Shell

В Оболочка Функция имеет 2 параметра - имя вызываемой программы и стиль окна, который программа собирается использовать. Мы использовали vbNormalFocus в приведенных выше примерах это означает, что когда программа (в данном случае Блокнот) открывается, она находится в фокусе и открывается в позиции и размере по умолчанию на ПК.

В Оболочка предлагает пять других вариантов:

vbHide Скрывает окно и устанавливает фокус на это окно

vbMinimizedFocus Отображает окно в виде значка с фокусом

vbMaximizedFocus Открывает программу в развернутом окне с фокусом

vbNormalNoFocus Восстанавливает окно в его самом последнем положении и размере

vbMinimizedNoFocus Отображает окно в виде значка, и текущее активное окно остается активным

Возврат идентификатора процесса из команды оболочки

Когда мы запускаем Оболочка Команда, она возвращает идентификатор процесса или задачи. Мы можем сохранить идентификатор процесса в переменной и использовать этот идентификатор процесса при запуске другой команды - например, TaskKill команда, чтобы закрыть файл Блокнота.

123456 Sub TestPIDDim ProcessID как целое числоprocessID = Shell ("блокнот", vbNormalFocus)Оболочка вызова ("Taskkill / F / PID" + CStr (processID))MsgBox ("Notepad ProcessID =" + CStr (processID))Конец подписки

В первой строке открывается Блокнот, и Windows присваивает идентификатору процесса значение. Мы сохраняем это значение в переменной ProcessID. Затем мы используем TaskKill, чтобы заставить Блокнот закрыть только что открытый экземпляр Блокнота. В / F переключить силы Блокнот до конца, и / PID переключатель говорит TaskKill искать блокнот ID процесса ценить. Функция CStr преобразует ProcessID в строковый формат, который нужен Shell, и MsgBox в следующей строке.

Устали искать примеры кода VBA? Попробуйте AutoMacro!

Программирование на VBA | Генератор кода действительно работает для вас!

Вызов других программ из оболочки

Shell откроет любую другую программу Windows. Например, этот код вызывает Excel, и откроет файл Excel «example_workbook.xlsx»:

1 Вызов оболочки ("Excel" "C: \ DEMO \ example_workbook.xlsx" "", vbNormalFocus)

Это показывает открытый файл:

ShellExecute и ShellExecuteEx против команды оболочки

Пространство программирования Windows предлагает ShellExecute а также ShellExecuteEx функции, вызывающие внешние программы из программного кода. По сравнению с функцией оболочки VBA эти функции Windows предлагают большую гибкость, но VBA не поддерживает их, и поэтому в этой статье они не рассматриваются.

Вы поможете развитию сайта, поделившись страницей с друзьями

wave wave wave wave wave