Чаще всего Word запускается из Excel, Access или другого приложения, но иногда встречается и обратная необходимость — нужно открыть из Word другое приложение и переключиться в него. Самый простой способ запустить другое приложение из Word — воспользоваться стандартным объектом VBA Shell. Например, чтобы запустить блокнот, можно воспользоваться командой
Есть и множество других возможностей, например, воспользоваться объектом Application для других приложений Word, или средствами WSH (особенно для консольных приложений), или — если приложение нужно запустить на другом компьютере — средствами WMI.
После того, как приложение запущено, весь набор работающих приложений представляется в Word коллекцией Tasks, а каждое отдельное приложение — соответственно, объектом Task. У коллекции Tasks есть два интересных метода:
- Exists() — проверить, запущено ли нужное нам приложение. Например, запуск нашего блокнота с проверкой может выглядеть так:
If Tasks.Exists(«Notepad») = False Then
Автоматический запуск макросов в Excel
- ExitWindows() — произвести операцию Log Off, то есть завершить сеанс работы в Windows. Несохраненные документы Word при этом закроются без сохранения (и без вопросов к пользователю), а документы остальных приложений пользователю будет предложено сохранить.
У объекта Task интересных свойств и методов больше:
- Height, Width, Top, Left — эти свойства позволяют точно настроить размер окна выбранного вами приложения.
- Visible — возможность спрятать приложение.
- WindowState — возможность развернуть, свернуть или восстановить окно.
- назначение методов Activate(), Close(), Move(), Resize() очевидно.
самый интересный метод — это метод SendWindowMessage(). Он позволяет передавать окну приложения сообщения Windows (щелчки мышью, нажатия клавиш и т.п.). Разобраться в том, какие приложения можно посылать окнам приложений и что они значат, можно при помощи Microsoft Platform Software Development Kit. Например, чтобы в нашем блокноте отобразить окно «О программе», можно воспользоваться командой
Tasks(«Notepad»).SendWindowMessage https://vbastudio.ru/Book/11/11.6.10.html» target=»_blank»]vbastudio.ru[/mask_link]
VBA последовательный запуск макросов в Excel
Макрос запускает другие макросы последовательно. Макросы работают с Excel таблицами. Нужно запускать макрос, если выполнение предыдущего завершено. В текущем варианте:
Sub ОбновитьБазу() Application.Run «Открыть» Application.Run «Загрузка» Application.Run «Выгрузка» Application.Run «Закрыть» End Sub
- счетчик и его отслеживание
- запуск по времени
Но я уверена, есть какое-то более правильное и красивое решение.
Отслеживать
13.6k 12 12 золотых знаков 43 43 серебряных знака 72 72 бронзовых знака
задан 16 сен 2020 в 9:18
Анна Лебедева Анна Лебедева
475 3 3 серебряных знака 12 12 бронзовых знаков
Что в данном случае «макрос»? подпрограмма на VBA? тогда тупо CALL — он синхронный.
16 сен 2020 в 10:31
может попробуете циклы?! Типа: If макрос «Открыть» завершен, Then макрос «Загрузка» начать
16 сен 2020 в 16:16
Запуск макроса по времени
17 сен 2020 в 11:25
Так у вас ещё и внутри макросов что-то асинхронно выполняется? ну тогда не знаю. заводите флаги выполнения и отслеживайте их значения, что ли.
17 сен 2020 в 11:29
В VBA код выполняется последовательно. Процедура ОбновитьБазу передает управление процедуре Открыть и ждет завершения ее работы. После отработки Открыть управление переходит к процедуре Загрузка. и т.д. Возможно. даные на каком-то этапе (Загрузка или Выгрузка) не успевают обновиться, но это не имеет отношения к последовательности выполнения макросов
17 сен 2020 в 12:24
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Application.Run — это не самый простой и широко используемый способ запускать макросы (программы, функции) в VBA. Не углубляясь в детали, для Вашего случая подойдут такие способы:
- имя_программы (макроса) и без скобок перечисление аргументов через запятую
- Call имя_программы и в скобках перечисление аргументов через запятую.
Ниже — пример тестовой программы с обоими типами синтаксиса. По результатам выполнения видно, что программы выполняются строго последовательно, а не одновременно, как в Вашем случае.
Sub TEST() Dim wait_sec_1 As Integer, wait_sec_2 As Integer wait_sec_1 = 10 wait_sec_2 = 5 Macros1 wait_sec_1 Macros2 wait_sec_2 Call Macros1(wait_sec_1) Call Macros2(wait_sec_2) End Sub Sub Macros1(wait_sec_1 As Integer) Dim i As Integer For i = 0 To wait_sec_1 Application.Wait(Now + TimeValue(«0:00:01»)): DoEvents ‘one second wait Next i Debug.Print «First Macros work end» End Sub Sub Macros2(wait_sec_2 As Integer) Dim i As Integer For i = 0 To wait_sec_2 Application.Wait(Now + TimeValue(«0:00:01»)): DoEvents ‘one second wait Next i Debug.Print «Second Macros work end» End Sub
Источник: ru.stackoverflow.com
Общий цикл создания vba программ
Процесс создания программы обычно разбивается на ряд этапов:
1. Тщательный анализ задачи, решение которой предстоит запрограммировать.
2. Проектирование программы, т.е., подразделение её на отдельные блоки, каждый из которых будет предназначен для решения какой-нибудь локализованной подзадачи. Вместе с тем продумать, как эти блоки будут связаны друг с другом общим процессом решения всей задачи.
3. Поскольку мы имеем дело с визуальным программированием, то не обойтись без всевозможных окон (форм), в которых надо предусмотреть управляющие элементы и зоны для ввода или выбора данных.
4. Для каждого из элементов таких форм надо продумать, какие действия должны происходить в программе при воздействии на эти элементы. Вот тут уже придётся писать соответствующие подпрограммы (процедуры), которые эти действия будут производить в общей программе.
5. Когда этапы 1 – 4 пройдены, т.е., детальный проект составлен, можно переходить к его реализации:
Ø проектирование внешнего вида нужных форм и размещение на них элементов управления;
Ø описание свойств этих элементов в среде редактора VBA;
Ø написание программного кода (текста программ на языке VBA) необходимых процедур и т. д.
6. Следующий шаг – запуск программы на исполнение и выявление ошибок в ней.
7. При обнаружении ошибок в синтаксисе текста программы или ошибок в самом алгоритме (это выявляется посредством выполнения контрольного примера с заранее известными результатами) наступает период отладки программы.
8. Отладка сводится к выявлению характера ошибки, её устранению и повторному исполнению программы. Эти действия повторяются до тех пор пока все ошибки не будут устранены. У программистов бытует такое шуточное высказывание об этом периоде работы над программой: “Ещё одна ПОСЛЕДНЯЯ ошибка!”
9. Последний этап – “прогон” проекта на реальных данных и сдача его в эксплуатацию.
Уточним некоторые подробности.
Создавать новую форму, размещать в ней надписи, поля ввода, командные кнопки и другие элементы управления, а также писать программный код необходимых процедур, удобнее всего с помощью визуальной среды разработки, предоставляемой редактором VBA.
Например, для создании новой формы потребуется лишь выбрать в меню редактора VBA команду Insert =>UserForm, и на экран будет выведено окно новой, пока еще пустой формы. Затем, копируя в форму заготовку элемента управления надпись, можно будет добавить в нее необходимые надписи, а с помощью копирования заготовки элемента управления командная кнопка, можно будет поместить в форму любые требуемые кнопки, — например, ту, после щелчка на которой выполнение вашей программы будет завершаться. Наконец, при выборе команды меню View => Code в редакторе VBA будет открыто окно программного кода, предназначенное для записи текста необходимых процедур обработки событий формы и ее компонентов, а также разнообразных вспомогательных процедур.
После того как программа, наконец, будет готова, следует перейти к третьему этапу работы — тестированию созданной вами программы. Этот процесс предполагает тщательный анализ функционирования только что созданной программы в самых различных режимах, назначение которого — убедиться, что она работает в полном соответствии с вашими планами. Для этого удобнее всего воспользоваться командой меню редактора VBA Run … (Выполнить …). При выборе этой команды вновь созданная программа запускается на выполнение и появляется возможность проверить, как она реагирует на те или иные события, правильно ли обрабатываются введенные данные (как корректные, так и заведомо ошибочные), позволяет ли она решить ту задачу, для которой, собственно, и была создана.
При обнаружении любых ошибок или просто нежелательных отклонений от нормальной работы требуется перейти к четвертому этапу разработки программы — провести ее отладку. Суть этой процедуры состоит в том, что с помощью тех или иных средств выясняется причина появления ошибки в работе программы и принимается решение о способах ее устранения. Теперь потребуется вернуться ко второму этапу и внести в программу необходимые изменения, а затем вновь перейти к третьему этапу и повторить ее тестирование.
Этот цикл повторяется до тех пор, пока тестирование не покажет отсутствие каких-либо отклонений от ожидаемого поведения программы. Надо заметить, что редактор VBA предлагает несколько мощных и эффективных средств автоматизации процесса отладки.
9.1. Понятие об общем цикле создания vba – программы
Процесс создания
программы обычно разбивается на ряд
этапов:
- Тщательный
анализ задачи, решение которой предстоит
запрограммировать. - Проектирование
программы, т.е., подразделение её на
отдельные блоки, каждый из которых
будет предназначен для решения
какой-нибудь локализованной подзадачи.
Вместе с тем продумать, как эти блоки
будут связаны друг с другом общим
процессом решения всей задачи. - Поскольку
мы имеем дело с визуальным
программированием,
то не обойтись без всевозможных окон
(форм), в которых надо предусмотреть
управляющие элементы и зоны для ввода
или выбора данных. - Для
каждого из элементов таких форм надо
продумать, какие действия должны
происходить в программе при воздействии
на эти элементы. Вот тут уже придётся
писать соответствующие подпрограммы
(процедуры), которые эти действия будут
производить в общей программе. - Когда
этапы 1 – 4 пройдены, т.е., детальный проект
составлен, можно переходить к его
реализации:
- проектирование
внешнего вида нужных форм и размещение
на них элементов управления; - описание
свойств этих элементов в среде редактора
VBA; - написание
программного кода (текста программ на
языке VBA)
необходимых процедур и т. д.
- Следующий шаг
– запуск программы на исполнение и
выявление ошибок в ней. - При
обнаружении ошибок в синтаксисе
текста программы или ошибок в самом
алгоритме (это выявляется посредством
выполнения контрольного примера с
заранее известными результатами)
наступает период отладки
программы. - Отладка
сводится к выявлению характера ошибки,
её устранению и повторному исполнению
программы. Эти действия повторяются
до тех пор пока все ошибки не будут
устранены. У программистов бытует
такое шуточное высказывание об этом
периоде работы над программой: “Ещё
одна ПОСЛЕДНЯЯ ошибка!” - Последний этап
– “прогон” проекта на реальных
данных и сдача его в эксплуатацию.
Уточним некоторые
подробности.
Создавать
новую форму, размещать в ней надписи,
поля ввода, командные кнопки и другие
элементы управления, а также писать
программный код необходимых процедур,
удобнее всего с помощью визуальной
среды разработки, предоставляемой
редактором VBA.
Например,
для создании новой формы потребуется
лишь выбрать в меню редактора VBA
команду Insert
=>UserForm,
и на экран будет выведено окно новой,
пока еще пустой формы. Затем, копируя в
форму заготовку элемента управления
надпись,
можно будет
добавить в нее необходимые надписи, а
с помощью копирования заготовки элемента
управления командная
кнопка, можно
будет поместить в форму любые требуемые
кнопки, — например, ту, после щелчка на
которой выполнение вашей программы
будет завершаться. Наконец, при выборе
команды меню View
=> Code
в редакторе VBA
будет открыто окно программного кода,
предназначенное для записи текста
необходимых процедур обработки событий
формы и ее компонентов, а также
разнообразных вспомогательных процедур.
После
того как программа, наконец, будет
готова, следует перейти к третьему этапу
работы — тестированию созданной вами
программы. Этот процесс предполагает
тщательный анализ функционирования
только что созданной программы в самых
различных режимах, назначение которого
— убедиться, что она работает в полном
соответствии с вашими планами. Для этого
удобнее всего воспользоваться командой
меню редактора VBA
Run
… (Выполнить …). При выборе этой команды
вновь созданная программа запускается
на выполнение и появляется возможность
проверить, как она реагирует на те или
иные события, правильно ли обрабатываются
введенные данные (как корректные, так
и заведомо ошибочные), позволяет ли она
решить ту задачу, для которой, собственно,
и была создана.
При
обнаружении любых ошибок или просто
нежелательных отклонений от нормальной
работы требуется перейти к четвертому
этапу разработки программы — провести
ее отладку. Суть этой процедуры состоит
в том, что с помощью тех или иных средств
выясняется причина появления ошибки в
работе программы и принимается решение
о способах ее устранения. Теперь
потребуется вернуться ко второму этапу
и внести в программу необходимые
изменения, а затем вновь перейти к
третьему этапу и повторить ее тестирование.
Этот
цикл повторяется до тех пор, пока
тестирование не покажет отсутствие
каких-либо отклонений от ожидаемого
поведения программы. Надо заметить, что
редактор VBA
предлагает несколько мощных и эффективных
средств автоматизации процесса отладки.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
Источник: cleancitygroup.ru