Оболонка VBA

Цей підручник покаже, як користуватися функцією оболонки VBA.

Ми можемо використовувати VBA Оболонка функція для виклику окремої виконуваної програми всередині програми VBA. Наприклад, якщо нам потрібно відкрити Блокнот з Excel, ми можемо використовувати для цього функцію оболонки VBA. Якщо виклик оболонки вдався, він повертає значення Windows TaskID програми, яку вона викликала. Якщо виклик оболонки не вдається, вона повертає нуль.

Оболонка має два вхідних параметра: обов'язковий шлях для виклику програми та за бажанням віконний стиль значення, що контролює стиль вікна, де буде працювати програма. The шлях значення може включати шлях / каталог програми та аргументи.

Виклик Shell

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

1 Shell виклику ("блокнот", vbNormalFocus)

Наприклад:

Оболонка Зачекайте

Ми можемо використовувати VBA Зачекайте команда відстрочити виклик Оболонка команду на певний проміжок часу.

12 Application.Wait (Зараз + TimeValue ("00:00:05"))Shell виклику ("блокнот", vbNormalFocus)

Тому перед викликом команди Shell пройде 5 секунд.

Повернення помилки з функції оболонки

Якщо у нас виникає помилка у коді під час виклику Оболонка функція, і помилка буде повернута, і наш код перейде в режим налагодження.

Наприклад, у цьому макросі ми неправильно написали “блокнот”.

1 Shell виклику ("блокнот", vbNormalFocus)

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

Програмування VBA | Генератор коду працює для вас!

Відкрийте існуючий файл за допомогою оболонки

Якщо у нас є певний файл, який ми хочемо відкрити за допомогою Оболонка команду, ми можемо включити ім'я файлу до нашого коду.

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

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

Параметри, що використовуються функцією Shell

The Оболонка Функція має 2 параметри - ім'я програми для виклику та стиль вікна, який програма збирається використовувати. Ми використовували vbNormalFocus у наведених вище прикладах це означає, що при відкритті програми (у даному випадку Блокнот) вона має фокус, і вона відкривається у позиції та розмірі за замовчуванням на ПК.

The Оболонка пропонує ще п’ять варіантів:

vbHide Приховує вікно та встановлює фокус на цьому вікні

vbMinimizedFocus Відображає вікно як піктограму з фокусом

vbMaximizedFocus Відкриває програму у розгорнутому вікні з фокусом

vbNormalNoFocus Відновлює вікно в його останній позиції та розмірі

vbMinimizedNoFocus Відображає вікно як піктограму, а поточне активне вікно залишається активним

Повернення ідентифікатора процесу з команди Shell

Коли ми запускаємо Оболонка Команда повертає ідентифікатор процесу або завдання. Ми можемо зберігати ідентифікатор процесу у змінній і використовувати цей ідентифікатор процесу під час виконання іншої команди - наприклад, TaskKill команда, щоб закрити файл Блокнота.

123456 Sub TestPIDЗатемнити ProcessID як ціле числоprocessID = оболонка ("блокнот", vbNormalFocus)Виклик оболонки ("Taskkill /F /PID" + CStr (processID))MsgBox ("Блокнот ProcessID =" + CStr (processID))End Sub

У першому рядку відкривається NotePad і ідентифікатору процесу присвоюється значення Windows. Ми зберігаємо це значення у змінній ProcessID. Потім ми використовуємо TaskKill, щоб змусити Блокнот закрити екземпляр NotePad, який ми щойно відкрили. The перемикання сил Блокнот до кінця, і /PID підкаже перемикач TaskKill шукати Блокнот Ідентифікатор процесу значення. Функція CStr перетворює ProcessID до рядкового формату, необхідного обом Shell та MsgBox у наступному рядку.

Втомилися від пошуку прикладів коду VBA? Спробуйте AutoMacro!

Програмування VBA | Генератор коду працює для вас!

Виклик інших програм з Shell

Shell відкриє будь -яку іншу програму Windows. Наприклад, цей код викликає Excelта відкриває файл Excel ‘example_workbook.xlsx’:

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

Це показує відкритий файл:

ShellExecute та ShellExecuteEx проти команди Shell

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

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

wave wave wave wave wave