使用 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"
我有一个 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"