2016-03-22 102 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" 
相关问题