我有以下以前手动运行的 Skript:
set DIR="X:\SYSTEM\MAKROS"
X:
cd %DIR%
start /wait EXCEL.EXE /e-GENERATE_REPORTS BSYSTEM.XLA
手动启动时,它工作正常。这BSYSTEM.XLA
是基于 Excel 的项目管理系统的一部分,因此我无法将文件导出为其他文件格式。
我现在需要每天运行这个脚本。当创建计划任务来运行这个.bat
文件时,它根本不起作用。任务在几秒钟内结束(脚本通常需要大约 10 分钟才能完成),并显示上次运行的结果代码,0x1
并且任务的历史记录没有显示任何有用的信息:
我已经尝试创建一个直接运行的任务"C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE" /e-GENERATE_REPORTS BSYSTEM.XLA
但这只会在历史记录中显示错误:
任务计划程序无法在任务“\Allgemein\TMG Bericht”的实例“{1fbeadd0-605b-4fe0-8d96-621281c53519}”中启动操作“C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE”。附加数据:错误值:2147942667。
我也尝试过这样的 vbs 脚本:
set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
set xlBook = xlApp.Workbooks.Open("X:\SYSTEM\MAKROS\BSYSTEM.XLA")
xlApp.Run "GENERATE_REPORTS"
xlBook.Close
xlApp.Quit
但这样我就得到了错误The macro can not be executed. The 'GENERATE_REPORTS' macro may not be available in this workgroup, or all macros have been disabled
,但事实并非如此,因为手动调用上述脚本可以正常工作。启动文件的网络驱动器被设置为“受信任位置”。
奇怪的是,当我打开时,BSYSTEM.XLA
我看不到任何工作表,只有一个 excel 文件,除了 makro 按钮之外,几乎所有元素都变灰了,当我尝试查看宏时,我什么也看不到。这就是为什么我很难理解start /wait EXCEL.EXE /e-GENERATE_REPORTS BSYSTEM.XLA
到底发生了什么……
除了这两个文档之外,我真的找不到有关 Excel 命令行开关的任何有用信息:
- https://support.office.com/en-us/article/command-line-switches-for-microsoft-office-products-079164cd-4ef5-4178-b235-441737deb3a6
- https://support.microsoft.com/de-de/help/291288/description-of-the-startup-switches-for-excel
我该怎么做才能为上述 btach 脚本提供可编写脚本的替代方案,以便我可以将此命令作为计划任务运行,或者我该怎么做才能修复 vbs?
答案1
您的 VBA 脚本失败,因为 xlBook 不是支持 Run 方法的正确对象。
尝试
xlApp.Run "GENERATE_REPORTS"
上述替代方案
如果您的宏位于模块中
xlApp.Run "BSYSTEM.xls!GENERATE_REPORTS"
,请注意“workbookName”的格式!宏如果你的宏在工作表中
'xlApp.Run "'BSYSTEM.xls'!sheet1.GENERATE_REPORT"
文件扩展名
.xla是 Excel 插件文件格式,您可以尝试将其保存为.xlam这是 xla 的一种启用宏的格式。
代码解析
set xlApp = CreateObject("Excel.Application")
‘创建 Excel 应用程序过程。
xlApp.Visible = True
'启用要查看/编辑的申请。
set xlBook = xlApp.Workbooks.Open("X:\SYSTEM\MAKROS\BSYSTEM.XLA")
‘打开指定的工作簿在刚刚打开的 Excel 应用程序中。
xlApp.Run "GENERATE_REPORTS"
‘运行宏命令生成报告。
xlBook.Close
'关闭工作簿。
xlApp.Quit
'结束 Excel 应用程序进程。
答案2
由于使用此命令 Excel 需要显示 UI,因此任务无法在后台运行,当Run whether user is logged on or not
在任务属性中选择时会自动出现这种情况。设置此选项后,一切都按预期工作:
为了能够在服务器重启后执行任务,我启用了自动登录此工具。