Как использовать Application.OnTime для ежедневного вызова макроса в определенное время без необходимости закрывать книгу

Я написал макрос, который использует Application.OnTime, который работает, если я выполняю макрос вручную. Я'я пытаюсь автоматизировать этот процесс, поэтому я нене нужно писать Application.OnTime в "Эта Рабочая тетрадь » или (Private Sub Workbook_Open () Большинство из вас делают это, потому что у вас может быть планировщик windows, который открывает книгу в определенное время, запускает макросы при открытии. Я НЕ МОГУ ИСПОЛЬЗОВАТЬ SCHEDULER.

Поскольку я не могу использовать планировщик Windows, я буду держать рабочую книгу открытой, а таймер должен обновить мои данные, а затем «Вызов»мой макрос " в определенное время каждый день.

Где разместить этот код и как установить автоматический таймер?

 Kazimierz Jawor25 июн. 2013 г., 17:50
чтобы быть уверенным - вы будете держать приложение Excel открытым все время? есть ли постоянный интервал времени между каждым вызовом макроса? Вы можете запустить его вручную в первый раз?
 Shayne K25 июн. 2013 г., 18:02
Рабочая книга будет открыта все время, никогда не закрывается. Интервал будет таким же. (в 3:30 каждый день), если бы я запускал его вручную один раз в 3:30, есть ли способ продолжать вызывать макрос каждый день ... 24 часа спустя?

Ответы на вопрос(1)

Решение Вопроса

ь следующим образом:

Sub Call_At_3_30()
    'first call appropriate procedure 
    Call myProcedure
    'next, set new calling time
    Application.OnTime TimeValue("3:30:00"), "Call_At_3_30"
End Sub

Где-то вы сохраните свою основную процедуру, в этой ситуации:

Sub myProcedure
    'your code here
End Sub

В этой ситуации вам нужно запустить первую подпрограммуCall_At_3_30 только однажды. Но вы должны помнить, что Excel должен быть включен все время.

При желании, если вы хотите вызвать процедуру через 24 часа, вы можете изменить.OnTime инструкция таким образом:

Application.OnTime Now + 1, "Call_At_3_30"

Возможны и другие модификации.

 Shayne K25 июн. 2013 г., 19:02
Вы правы, чтобы проверить эту теорию, только сейчас я написал это. # 1 = нет ошибки # 2 = сообщение об ошибке Sub Call_At_10_00 () End Sub 'Первый вызов соответствующей процедуры Вызов Mail_Sheet_Outlook_Body 'затем установите новое время вызова Application.OnTime TimeValue ("10:00:00") "Call_At_10_00"       Sub Call_At_9_43 () Вызов Mail_Sheet_Outlook_Body Application.OnTime TimeValue ("10:01:00") "Call_At_10_49" End Sub
 Shayne K25 июн. 2013 г., 19:03
чтобы быть понятным, это правильно Sub Call_At_10_00 () End Sub 'Первый вызов соответствующей процедуры Вызов Mail_Sheet_Outlook_Body 'затем установите новое время вызова Application.OnTime TimeValue ("10:00:00") "Call_At_10_00"      Я надеюсь, что завтра.
 Shayne K25 июн. 2013 г., 19:02
задача решена! Спасибо
 Kazimierz Jawor25 июн. 2013 г., 19:01
Мне нужно увидеть полный код ... (вы можете отредактировать свой вопрос).Cannot run the macro Предположим, что вы неправильно указали имя вызывающего саба. Ошибка возникает во времяSub Call_at_9_43() выполнение или после, в результате?Application.OnTime
 Shayne K25 июн. 2013 г., 18:54
Это работает отлично. Я добавил код сверху, и макрос выполняется отлично, но яполучаю сообщение об ошибке Невозможно запустить макрос Код: Sub Call_At_9_43 () 'Первый вызов соответствующей процедуры Вызов Mail_Sheet_Outlook_Body 'затем установите новое время вызова Application.OnTime TimeValue ("9:49:00") "Call_At_9_49" Конец саб я знаю мойсуб вызов " Безразлично»не соответствует, но это не должноэто не проблема. Помешает ли эта всплывающая ошибка запуститься завтра в 9:49, если я ненажмите кнопку ОК Я'Я думаю, что еще один звонок с send.keys, чтобы нажать Enter

Ваш ответ на вопрос