繁体   English   中英

如何在使用任务计划程序打开而不是手动打开时运行 Excel 宏?

[英]How to run Excel macro on open with Task Scheduler but not on manual open?

对不起标题。

我有一个想要每天更新的 excel 工作簿,所以我创建了以下代码。 我还创建了一个任务,以便它会在非高峰时段更新,这很棒。 工作簿将打开、刷新、保存和关闭,无需我执行任何操作。

我可以看到的问题是当我想手动打开工作簿时,它会在我不想要它时运行此代码。 我只希望它与计划任务一起运行,现在在手动打开时运行。 我考虑过放入一个消息框,但任务调度程序无法通过它。

如何确保使用任务计划程序自动更新工作簿,但手动打开工作簿时不会更新?

Sub RefreshAndClose_Open()

ThisWorkbook.RefreshAll
DoEvents
ThisWorkbook.Save
DoEvents
Application.Quit

End Sub

我将更改计划的批处理作业以在与名为“runmacro.txt”的工作簿相同的目录中创建一个文件,打开工作簿,然后删除该文件。 然后在你的宏中:

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

    'Your code

End if

除非由计划任务打开,否则该文件将不存在。

根据@urdearboy,我用了一个简单的时间 if... then 声明。 一小时被封锁并不是很多,因为它几乎没有打开。 我将研究@chrisneilsen 对倒数计时器表单的建议。

Sub RefreshAndClose()

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

End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM