VBA Excel:插入其他工作簿的代码不会执行workbooks.open命令

我从这个工作簿注入代码到其他工作簿,这将执行一些工作簿到Workbook_BeforeSave。 我必须这样做才能将工作表的内容保存到集中式工作簿中。 我有一个中央工作簿和100颗卫星。

其中一个插入的命令是:

set workbooktostore = workbooks.open(storefile) 

当我在注入结束时保存工作簿时,这个命令根本就没有执行。 当用户点击卫星文件保存时,我没有这个问题。

这里是一个例子:

 Public sub Main dim workbooktoinject as workbook set workbooktoinject = workbooks.add INSERTVBCODE(workbooktoinject) workbooktoinject.saveas "C:\satellite1.xlsm", xlOpenXMLWorkbookMacroEnabled End Sub Private Sub INSERTVBCODE(WorkbookToUpdate As Workbook) Dim VBProj As VBIDE.VBProject Dim VBComp As VBIDE.VBComponent Dim CodeMod As VBIDE.CodeModule Dim LineNum As Long Set VBProj = WorkbookToUpdate.VBProject Set VBComp = VBProj.VBComponents("ThisWorkbook") Set CodeMod = VBComp.CodeModule CodeMod.InsertLines LineNum, "Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)" LineNum = LineNum + 1 CodeMod.InsertLines LineNum, " dim workbooktostore as workbook" LineNum = LineNum + 1 CodeMod.InsertLines LineNum, " dim storefile as string" LineNum = LineNum + 1 CodeMod.InsertLines LineNum, " storefile=""C:\storefile.xlsx""" LineNum = LineNum + 1 CodeMod.InsertLines LineNum, " msgbox ""Test display""" LineNum = LineNum + 1 CodeMod.InsertLines LineNum, " set workbooktostore = workbooks.open(storefile)" LineNum = LineNum + 1 CodeMod.InsertLines LineNum, " msgbox workbooktostore.readonly" LineNum = LineNum + 1 CodeMod.InsertLines LineNum, " workbooktostore.close" LineNum = LineNum + 1 CodeMod.InsertLines LineNum, "end sub" end sub 

当您执行Main时,这将导致一个msgbox显示“testing显示”。 但是,当你点击保存到staellite1.xlsm,你应该看到第二个msgbox显示“false”。 当SaveAs被执行时,我期望有相同的msgbox …