Excel VBA поможет автоматически запускать макросы на 4 точки в день - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь запустить макрос 4 раза в день.10:10, 12:25, 15:25 и 18:15.

Этот файл Excel открывается утром и открыт весь день.На следующий день файл сохраняется с новым именем даты и открыт весь день.

Я думаю, что он получил автоматическое обновление один раз, но, похоже, не работает для остальных.Я использовал то, что нашел в Интернете, чтобы он автоматически запускался один раз в 10:10.

Эта часть находится в "ThisWorkbook" в разделах "Рабочая тетрадь" и "Открыть"

Private Sub Workbook_Open()
Application.OnTime TimeValue("10:10:00"), "UpdateManifestpending"
End Sub

Затемследующая часть находится в модуле, в котором сохранен макрос. Макрос просто обновляет соединение для передачи данных.

Sub UpdateManifestpending()

Application.OnTime TimeValue("10:10:00"), "UpdateManifestpending"
'
' UpdateManifestpending Macro
'

'
ActiveWorkbook.Connections("ManifestPendingUpdates").Refresh
End Sub

Я хотел бы провести этот прогон не только один раз в 10:10, но ив другое время дня, указанного выше.Я пытался сделать так, чтобы он запускался 4 раза в день, но, похоже, он не работает.

В "Thisworkbook"

Private Sub Workbook_Open()
Application.OnTime TimeValue("10:10:00"), "UpdateManifestpending"
Application.OnTime TimeValue("12:15:00"), "UpdateManifestpending"
Application.OnTime TimeValue("15:25:00"), "UpdateManifestpending"
Application.OnTime TimeValue("15:25:00"), "UpdateManifestpending"
End Sub'

И в ModuleID для макроса

`Sub UpdateManifestpending()

Application.OnTime TimeValue("10:10:00"), "UpdateManifestpending"
Application.OnTime TimeValue("12:15:00"), "UpdateManifestpending"
Application.OnTime TimeValue("15:25:00"), "UpdateManifestpending"
Application.OnTime TimeValue("15:25:00"), "UpdateManifestpending"

'
' UpdateManifestpending Macro
'

'
ActiveWorkbook.Connections("ManifestPendingUpdates").Refresh
End Sub

`

Возможно, я неправильно понимаю, как это активировать. В любое время любая помощь приветствуется

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018
  1. Код 1: A WorkBook_Open, который вызывает ваш макрос планировщика
  2. Код 2: Ваш макрос планировщика, который вызывает код для запусказаданное время
  3. код 3: ваш код для запуска в указанное время
  4. Home Stretch: Проверка Настройки безопасности вразрешить выполнение этой серии шагов

Код 1

Под кодовым пространством для ThisWorkbook

Private Sub Workbook_Open()
    Call Scheduler
End Sub

Код2

В кодовом пространстве Module у вас будет 2 набора кода.

Sub Scheduler()
    Application.OnTime TimeValue("10:10:00"), "UpdateManifestpending"
    Application.OnTime TimeValue("12:15:00"), "UpdateManifestpending"
    Application.OnTime TimeValue("15:25:00"), "UpdateManifestpending"
    Application.OnTime TimeValue("15:25:00"), "UpdateManifestpending"
End Sub

Код 3

Sub UpdateManifestpending()
    'Code here
End Sub

Home Stretch

Вам потребуется разрешить программный доступ к проекту VB

Перейдите к Trust Center > Macro Settings и выберите Trust access to the VBA project object module

enter image description here

0 голосов
/ 12 декабря 2018

В общедоступном модуле поместите этот код динамического планирования.

sub runWhen()

    Select Case Time
        Case Is < TimeSerial(10, 10, 0)
            Application.OnTime TimeSerial(10, 10, 0), "UpdateManifestpending"
        Case Is < TimeSerial(12, 25, 0)
            Application.OnTime TimeSerial(12, 25, 0), "UpdateManifestpending"
        Case Is < TimeSerial(15, 25, 0)
            Application.OnTime TimeSerial(15, 25, 0), "UpdateManifestpending"
        Case Is < TimeSerial(18, 15, 0)
            Application.OnTime TimeSerial(18, 15, 0), "UpdateManifestpending"
    End Select

end sub

В ThisWorkbook,

Private Sub Workbook_Open()
    runWhen
End Sub

Добавьте планирование в UpdateManifestpending непосредственно перед End Sub.

sub UpdateManifestpending()

   'lots of code here

    runWhen
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...