vba - 使用Excel vba宏通过Windows计划任务运行

标签 vba excel scheduled-tasks

我有一个 Excel 电子表格,我设置了一个计时器来将代码运行到数据库中。如果电子表格已打开并且现在的时间是时隙内设置的时间,则它将数据导出到数据库中

我在子例程和 workbook_open 中都使用了这一行 Application.OnTime TimeValue("22:00:00"), "ExportOpenJobs"

这对于电子表格打开时非常有用,但我希望能够通过 Windows 计划任务进行设置。

我使用 Windows Server 2012 作为我的主机和文件的存储位置。在任务计划程序中,我将启动程序的操作和程序脚本设置为位置和实际的 *.xlsm 文件以及任务的开始时间。我在 Excel VBA 中将此任务设置为时间前 30 秒。

我的问题是 Windows 任务计划程序在设置的时间运行,查看任务历史记录后,我可以看到任务已开始/已完成和操作已开始/已完成通常需要大约 50 分钟才能完成,但是当我检查数据库时, Excel VBA 尚未运行。

如何让我的任务计划程序运行 Excel VBA 代码?

在 Windows Server 中,您实际上需要安装 Excel,因此应该在另一台计算机上完成吗?

最佳答案

您好,我要做的是创建此 .VBS 文件,然后使用 Windows 任务计划程序以所需的时间间隔执行此 vbs 文件。

Set fso = CreateObject("Scripting.FileSystemObject")
curDir = fso.GetAbsolutePathName(".")

Set myxlApplication = CreateObject("Excel.Application")
myxlApplication.Visible = False
Set myWorkBook = myxlApplication.Workbooks.Open( curDir & "\myTest.xlsm" ) 'Change to the actual workbook that has the Macro
myWorkBook.Application.Run "Module1.HelloWorld" 'Change to the Module and Macro that contains your macro
myxlApplication.Quit

Application.Run Method (Excel)

此示例确实需要将 Excel 安装到运行计划任务的主机上。如果该主机是服务器或台式计算机,则由您选择。

Windows 任务计划程序应该针对任务的操作部分进行这样的操作:

操作:启动程序

程序/脚本:C:\Windows\SysWOW64\cscript.exe

添加参数(可选):C:\Path_to_your_vbs\Your.vbs

开始于(可选):C:\Path_to_your_vbs\

关于vba - 使用Excel vba宏通过Windows计划任务运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24129613/

相关文章:

excel - 在Excel VBA中设置缩放而不选择

vba - 如何显示hh :mm:ss in Excel?

正则表达式匹配日期月份和年份

javascript - workbooks.open w/direct path 不起作用,但使用 HTML id 解决方法却可以,为什么?

shell - 从 Excel Vba 调用 Unix 脚本

python - 当通过任务计划程序执行 Qt 应用程序时,如何加载 Qt 应用程序的托盘图标?

java - 使用定时器在java中安排任务

javascript - 从 VBA 添加自定义 pdf 图章到文档

c# - 以编程方式更新 Excel 文档

c# - 使用什么来安排 .NET 应用程序每天运行?