2016-03-22 100 views
0

我有一個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文件都可以,因爲它們在手動運行時工作,可能並非如此...

+3

你可以嘗試通過從調度運行它[的Cscript.exe] (http://ss64.com/vb/cscript.html) – Filburt

+1

正如@Filburt所述,明確使用CSCRIPT,而不是默認的隱式WSCRIPT作爲腳本shell。 – Jeeped

+1

使用'start「」/ WAIT「Q:\ Secure \ Automation.vbs」'讓批處理文件等到VBScript完成... – aschipfl

回答

3

不要使用批處理文件來運行它。只需使用...

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

...作爲您在任務計劃程序中的命令。

0

我通常只是編寫一個批處理文件來調用文件來運行宏。我在許多項目中都使用它。確保模塊內有宏。 ETA:然後安排批處理文件課程

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 
+0

您使用的是excel來運行批處理文件嗎? – Chuck

+0

編號使用批處理文件運行excel :) – mrbungle

+0

對不起,我第一次真正看錯了。 – Chuck

1

Q:一個網絡驅動器?你需要設置你的計劃任務與可以訪問網絡資源的憑據下運行,也映射在批處理文件的驅動器,像這樣:

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