我有一個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