我有一个Excel文件,其中包含来自MS访问的查询,需要在每周一早上6点刷新。目前我们使用Business Objects来计划这一点,但我们试图摆脱这一点,因此使用Access/Excel。使用Windows计划程序运行.vbs文件(通过批处理文件?)
目前,我有一个.vbs文件:
Set fs = CreateObject("Scripting.FileSystemObject")
Set rootFolder = fs.GetFolder(fs.GetParentFolderName(wscript.ScriptFullName))
Set oExcel = CreateObject("Excel.Application")
oExcel.Visible = True
oExcel.DisplayAlerts = False
oExcel.AskToUpdateLinks = False
oExcel.AlertBeforeOverwriting = False
For Each file in rootFolder.Files
If inStr(file.type, "Excel") > 0 Then
Set oWorkbook = oExcel.Workbooks.Open("Q:\Secure\testing.xlsm")
oWorkbook.RefreshAll
WScript.Sleep 1000 * 60
oWorkbook.Save
oWorkbook.Close
Set oWorkbook = Nothing
End If
Next
oExcel.Quit
Set oExcel = Nothing
这将打开有问题的Excel文件时,将刷新它的查询(允许此一分钟),然后保存并关闭Excel文件。我可以手动打开这个.vbs文件,它可以按预期的方式工作,但是我不想每个星期一早上6点都要手动执行此操作。然后我试着将它与Windows调度程序结合起来,它不会弹球(返回启动/运行失败)。经过一番搜索,我看到了一些使用.bat文件打开.vbs(通过Windows调度程序)的建议。我试图在.bat文件如下:
@echo off
Start "" "Q:\Secure\Automation.vbs"
再次,当我手动运行它,它按预期方式。当我尝试通过Windows调度程序运行时,它表示它已成功运行,在调度程序或弹出窗口中均未显示任何错误消息。这里的问题是excel文件没有实际更新或保存。任何人都可以在这里指出我正确的方向吗?我以为,我的.vbs和.bat文件都可以,因为它们在手动运行时工作,可能并非如此...
你可以尝试通过从调度运行它[的Cscript.exe] (http://ss64.com/vb/cscript.html) – Filburt
正如@Filburt所述,明确使用CSCRIPT,而不是默认的隐式WSCRIPT作为脚本shell。 – Jeeped
使用'start“”/ WAIT“Q:\ Secure \ Automation.vbs”'让批处理文件等到VBScript完成... – aschipfl