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" )