VBA .VBProject.VBComponents.Item(“ThisWorkbook”)。CodeModule.AddFromString不起作用

我创build了一堆工作簿dynamic链接,我需要压制链接的警告,所以我试图添加一个Workbook_Open()子与正确的代码。

唯一的问题是代码实际上并没有被添加到工作簿中。

 ' do not display alerts while processing so many files Application.DisplayAlerts = False wbNew.SaveAs FileName:=path, FileFormat:=51, CreateBackup:=False ' add a little Workbook_Open method to the new workbook's ThisWorkbook dynamically ' this line doesn't actually do anything - why? wbNew.VBProject.VBComponents.Item("ThisWorkbook").CodeModule.AddFromString ( _ "Private Sub Workbook_Open()" & vbCrLf _ & " Application.AskToUpdateLinks = False" & vbCrLf _ & " Application.DisplayAlerts = False" & vbCrLf _ & "End Sub") wbNew.Save wbNew.Close 

文件被创build,一切都很好,除了没有代码实际上被添加到我刚刚创build的工作簿中,这是一个普通的工作簿,它的ThisWorkbook是空白的。 (我也检查了我没有压制关于dynamic代码写入的任何警告,只是正常的saveas提示)。

我怎样才能做这个工作?

这适用于我,没有提示或缺less代码:

 Sub test() Dim wbnew As Workbook Set wbnew = Workbooks.Add Application.DisplayAlerts = False wbnew.SaveAs Filename:="C:\temp\abc.xlsm", FileFormat:=XlFileFormat.xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False wbnew.VBProject.VBComponents.Item("ThisWorkbook").CodeModule.AddFromString ( _ "Private Sub Workbook_Open()" & vbCrLf _ & " Application.AskToUpdateLinks = False" & vbCrLf _ & " Application.DisplayAlerts = False" & vbCrLf _ & "End Sub") wbnew.Close True Application.DisplayAlerts = True End Sub 

对于macros提示设置 – >选项 – >信任中心 – >macros设置为此将摆脱提示: 在这里输入图像说明