Можно ли запускать макрос каждый день за раз? - PullRequest
0 голосов
/ 11 сентября 2018

Мне нужно знать, возможно ли выполнять макрос ежедневно в 7:00.

Это можно сделать с помощью макроса или какого-то визуального базового компонента?

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Проблема с событием Workbook_Open() заключается в том, что, если вам все равно нужно будет выполнять действия с рабочей книгой вручную в течение дня, запускается макрос, который может быть источником ошибок в зависимости от того, что делает ваш макрос.

Кроме того, вы можете использовать планировщик заданий Windows, как упомянуто выше, для запуска сценария VB, который будет запускать макрос в вашей книге.

  Set xlApp = CreateObject("Excel.Application")
  xlApp.DisplayAlerts = False 'turn off alerts
  xlApp.Application.Visible = False  'keeps Excel hidden
  Set xlBook = xlApp.Workbooks.Open("C:\MyPath\MyWorkbook.xlsm", 0, False)
  xlApp.Run "MACRO_NAME"
  xlBook.Save
  xlBook.Close
  xlApp.Quit
  Set xlBook = Nothing
  Set xlApp = Nothing

Просто введите сценарий в блокноте и сохраните его в формате .vbs (а затем запустите планировщик задач Windows для запуска .vbs).

0 голосов
/ 11 сентября 2018

Я знаю несколько способов сделать это, но ни один из них не идеален.

Первый - это метод Application.OnTime в VBA (документация здесь ).Этот метод запланирует другой метод для запуска в определенное время.У меня нет тщательного тестирования этой функции, поэтому я не знаю, будет ли расписание сохраняться при перезапусках Excel или даже при закрытии книг.

Другой вариант - планировщик заданий Windows (спасибо Mistella ).Вы можете настроить базовую задачу в планировщике задач, чтобы открыть определенную рабочую книгу в Excel в определенный момент времени с заданным интервалом и получить код, который вы хотите запустить в событии Open Рабочей книги.В рамках этого события вы можете проверить время.Если время достаточно близко к назначенному времени планировщика задач, вы можете выполнить работу, которую вам нужно было сделать, сохранить рабочую книгу и закрыть ее, и все это без участия пользователя.

...