使用 Windows 调度程序 运行 .vbs 文件(通过批处理文件?)

Using Windows Scheduler to run a .vbs file (via a batch file?)

我有一个 Excel 文件,其中包含来自 MS 访问的查询,需要在每周一早上 6 点刷新。目前我们使用 Business Objects 来安排它,但我们正试图摆脱它,因此使用 Access/Excel.

目前我有一个 .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 Scheduler 结合起来,但它不会玩球(返回 launch/run 失败)。经过一番搜索后,我看到了一些使用 .bat 文件打开 .vbs 的建议(通过 Windows 调度程序)。我对 .bat 文件的尝试如下:

@echo off
Start "" "Q:\Secure\Automation.vbs"

同样,当我 运行 手动执行此操作时,它会按预期进行。当我通过 Windows Scheduler 尝试 运行ning 时,它说它已经 运行 成功,在调度程序或弹出窗口中没有显示任何错误消息。这里的问题是 excel 文件实际上没有更新或保存。谁能在这里指出我正确的方向?我认为我的 .vbs 和 .bat 文件都可以,因为它们在手动 运行ning 时工作,但似乎并非如此...

我通常只是写一个批处理文件来调用文件运行宏。我将它用于许多项目而没有失败。确保在模块内有宏。预计到达时间:然后安排批处理文件课程

Dim xlApp
Dim xlWkb
Set xlApp = CreateObject("excel.application")
Set xlWkb = xlApp.Workbooks.Open("PATH TO YOUR FILE")
xlApp.Visible = True
xlWkb.RunAutoMacros 1 'enables macros to be run on open
xlApp.Run ("YOUR PROCEDURE")
xlApp.Workbooks("YOUR WORKBOOK NAME").Save 'Save the workbook
xlApp.Quit 'quits excel

不要使用批处理文件 运行 它。只需使用...

cscript.exe "Q:\Secure\Automation.vbs"

...作为您在任务计划程序中的命令。

Q:是网络驱动器吗?您需要使用可以访问该网络资源的凭据将计划任务设置为 运行,并在批处理文件中映射驱动器,如下所示:

@ECHO OFF
NET USE Q: \YourServerName\ShareName
START "" "Q:\Secure\Automation.vbs"