VBAmacros刷新工作簿无法正常工作
我正在尝试使用macros执行“全部刷新”(如下图所示):
以下是macros(写在Module1中):
Sub Workbook_RefreshAll() ActiveWorkbook.RefreshAll End Sub
然后我写一个VBScript如下:
'Code should be placed in a .vbs file Set objExcel = CreateObject("Excel.Application") Set book = objExcel.Workbooks.Open("excel.xlsm", , True) WScript.Echo "Executing RefreshAll" objExcel.Application.Run "'excel.xlsm'!Module1.Workbook_RefreshAll" WScript.Echo "Executing Mailing" objExcel.Application.Run "'excel.xlsm'!ThisWorkbook.Mail" objExcel.DisplayAlerts = False objExcel.Application.Quit Set objExcel = Nothing
但是,这不是刷新工作簿。
你有一些你的对象和运行参数的不匹配。
而不是objExcel.Application.Run "'excel.xlsm'!Module1.Workbook_RefreshAll"
您应该使用您创build的book
对象,并且在run参数中不需要再次调用工作簿名称。 IE book.Application.Run "Module1.Workbook_RefreshAll"
你也可能想看看你是如何创buildbook
对象。 如果vbs文件和xlsm文件位于应该工作的文件夹中,则可推测。 但并不总是如此。
您可能要考虑将其添加到脚本的开头
Set fso = CreateObject("Scripting.FileSystemObject") curDir = fso.GetAbsolutePathName(".")
然后修改你的脚本
Set book = objExcel.Workbooks.Open( curDir & "\excel.xlsm" )