我有一个Excel电子表格,我已经设置了一个计时器来将代码运行到数据库中。如果电子表格是打开的,现在时间是在时间段内设置的时间,那么它会将数据导出到数据库中
我在子例程和workbook_open Application.OnTime TimeValue("22:00:00"), "ExportOpenJobs"
这非常适合电子表格打开时,但我希望能够通过Windows计划任务进行设置。
我正在使用Windows Server 2012作为我的主机pc以及存储文件的位置。在任务计划程序中,我将操作设置为启动程序,将程序脚本设置为位置和实际的* .xlsm文件以及任务的开始时间。我在Excel VBA中的时间之前30秒设置此任务。
我的问题是Windows任务计划程序在设置的时间运行,在查看任务历史记录后我可以看到任务已启动/已完成且操作已启动/已完成通常需要大约50分钟才能完成,但是当我检查数据库时Excel VBA尚未运行。
如何让我的任务计划程序运行Excel VBA代码?
在Windows Server中,您确实需要安装Excel,因此是否应该在另一台机器上完成?
答案 0 :(得分:8)
您好我要做的是创建此.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任务计划程序应该完成任务的Action部分:
Action: Start a program
Program/script: C:\Windows\SysWOW64\cscript.exe
Add arguments (optional): C:\Path_to_your_vbs\Your.vbs
Start in (optional): C:\Path_to_your_vbs\
答案 1 :(得分:0)
在Windows Task Scheduler中设置: 行动:启动程序 程序脚本:带有全引号的路径的Excel.exe。 添加参数:您要打开的工作簿,并在引号中使用完整路径
敲打几个小时后为我工作。