VBA宏刷新工作簿无法正常工作

时间:2017-04-07 21:06:08

标签: excel vba vbscript

我正在尝试使用宏来执行'全部刷新'(如下图所示):

enter image description here

以下是宏(在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

但它并没有让工作簿更新。

1 个答案:

答案 0 :(得分:0)

您的对象和运行参数存在一些不匹配。

您应该使用您创建的objExcel.Application.Run "'excel.xlsm'!Module1.Workbook_RefreshAll"对象而不是book,而不是在run参数中,您不需要再次调用工作簿名称。 I.E. book.Application.Run "Module1.Workbook_RefreshAll"

此外,您可能希望了解如何创建book对象。如果vbs文件和xlsm文件位于 工作的文件夹中,则可以推测。但它并不总是如此。

您可以考虑将其添加到脚本的开头

 Set fso = CreateObject("Scripting.FileSystemObject")
 curDir = fso.GetAbsolutePathName(".")

然后将脚本修改为

 Set book = objExcel.Workbooks.Open( curDir & "\excel.xlsm" )