繁体   English   中英

如何通过计划任务运行Excel宏

[英]How can you run an Excel macro through a schedule task

我需要通过计划任务在Excel电子表格中运行宏。 我把工作定义如下:

“C:\\ Program Files \\ Microsoft Office \\ Office10 \\ EXCEL.EXE”“”

问题是,当作业启动时,Excel会显示一个弹出窗口,询问我们是否要禁用/启用宏,这会阻止作业的执行。

如何在不必手动单击启用宏的情况下运行此宏?

编写一个简短的vbscript,它启动Excel,加载你的工作簿并使用Application.Run来运行宏。 让您的计划任务运行vbscript。

例如: http ://www.mrexcel.com/forum/showthread.php?t = 302970

您没有指定什么版本的Excel或什么版本的Windows(或Macintosh),所以我将指定我在Windows 7 Ultimate 64位上使用Office 32位的Excel 2010 ...


如果您希望保持工作簿打开并在指定时间运行代码,稍后再尝试此操作。

将新代码模块插入项目 - 或者 - 使用项目中已有的代码模块。

创建一个调度程序子例程,如下所示:

Sub Scheduler()

'-- RUNS SUB(S) (OR FUNCTIONS) AT TIME SCHEDULED.

    Application.OnTime TimeValue("11:46:40"), "TheScheduledSub"

End Sub

创建要运行的子例程(或函数)。 这是一个例子:

Sub TheScheduledSub()

    Debug.Print "TheScheduledSub() has run at " & Time

End Sub

Scheduler()将在由TimeValue定义的Scheduler()内指定的确切时间执行TheScheduledSub() 您可以在此处阅读有关TimeValue更多信息。

您可以传递时间值,希望Scheduler()子能够作为sub中的参数执行子(s)或函数。

你可以说,从现在起你可能会跑5个小时。 IE Application.OnTime Now + TimeValue(“05:00:00”),“TheScheduledSub”

或者从现在起一天? 玩弄它。

我确实得到了两个潜艇在不同的时间执行。 我也尝试同时执行两个。 我同时执行两个不同子的经验是第二个子似乎在第一个子执行之前执行,但我还没有完全探索它。 所以YMMV。

我认为Excel VBA不具备多线程能力,因此请牢记这一点。 我从Office套件运行32位Excel 2010。 不确定64位Office Excel的行为或任何其他版本或平台的行为。 无论如何,多线程/多任务Excel VBA不是你要求的,但它是要考虑的。

看到这个问题并玩上面的话,我可以想到一些我想尝试自己的想法!

您还可以使用工作簿打开和调用宏。 只是让计划任务打开工作簿,并在打开工作簿时运行宏。

此外,我发现这是一个好主意

Application.DisplayAlerts = False

在开始时禁用任何可能在运行时中断宏的弹出消息。

或者参见教程视频:http: //youtu.be/lFSgV2gym9g

您可以尝试降低excel的安全级别,以避免在启动excel时弹出。

暂无
暂无

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

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