Как запустить макрос Excel при открытом с помощью Task Scheduler, но не при ручном открытии? - PullRequest
0 голосов
/ 23 сентября 2019

Извините за заголовок.

У меня есть книга Excel, которую я хочу обновлять ежедневно, поэтому я создал следующий код.Я также создал задачу, чтобы она обновлялась в часы пик, и это здорово.Рабочая книга будет открываться, обновляться, сохраняться и закрываться без необходимости что-либо делать.

Проблема, с которой я могу столкнуться, заключается в том, что когда я хочу открыть книгу вручную, она будет запускать этот код, когда я не будуне хочу этогоЯ хочу, чтобы это выполнялось только с запланированной задачей, а теперь, когда она открывается вручную.Я думал о том, чтобы вставить окно сообщения, но тогда планировщик задач не сможет его преодолеть.

Как я могу убедиться, что рабочая книга обновляется автоматически с помощью планировщика задач, но не обновляется при открытии рабочей книги вручную?

Sub RefreshAndClose_Open()

ThisWorkbook.RefreshAll
DoEvents
ThisWorkbook.Save
DoEvents
Application.Quit

End Sub

Ответы [ 2 ]

0 голосов
/ 24 сентября 2019

За @urdearboy Я пошел с простым временем, если ... тогда заявление.Один час заблокирован не так много, так как он едва открыт.Я посмотрю на предложение @chrisneilsen формы таймера обратного отсчета.

Sub RefreshAndClose()

If Hour(Now) >= 12 And Hour(Now) <= 13 Then
ThisWorkbook.RefreshAll
DoEvents
ThisWorkbook.Save
DoEvents
Application.Quit
End If

End Sub
0 голосов
/ 23 сентября 2019

Я бы изменил запланированное пакетное задание, чтобы создать файл в том же каталоге, что и рабочая книга с именем «runmacro.txt», открыть книгу и затем удалить файл.Затем в вашем макросе:

If Len(Dir(ThisWorkbook.Path & Application.PathSeparator & "runmacro.txt")) > 0 Then

    'Your code

End if

Файл не будет там, кроме случаев, когда он открыт запланированной задачей.

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