vbamacros打开其他WB和执行macros失败时,其他WB具有userform显示打开

由于主题意味着我有一个问题,我找不到任何解决scheme。

我有一个工作簿(1),目的是打开其他WB并在其中运行macros。 除非另一个WB有Workbook_Open()事件来打开一个用户窗体(通常它会询问是否需要更新WB Workbook_Open()否则一切都像魅力一样。 然后我得到错误代码1004,我的代码失败。

当我打开另一个WB时,如何从触发中抑制Workbook_Open事件?

我已经尝试过设置Application.EnableEvents = False但它不相关。

非常感谢您对这个主题的任何帮助!

这是打开WB的代码

 Public Function wbTargetOpen(sTargetPath As String, SPassword As String) As Workbook Dim sWBName As String sWBName = Mid(sTargetPath, InStrRev(sTargetPath, "\") + 1, Len(sTargetPath) - InStrRev(sTargetPath, "\") + 1) If WorkbookIsOpen(sWBName) Then Set wbTargetOpen = Workbooks(sWBName) If wbTargetOpen.ReadOnly = True Then wbTargetOpen.Close Set wbTargetOpen = Workbooks.Open(FileName:=sTargetPath, UpdateLinks:=0, ReadOnly:=False, WriteResPassword:=SPassword) End If Else Set wbTargetOpen = Workbooks.Open(FileName:=sTargetPath, UpdateLinks:=0, ReadOnly:=False, WriteResPassword:=SPassword) End If If wbTargetOpen.ReadOnly Then sErrorCode = "ReadOnly" 

结束function

所有你需要做的是添加一个单词VbModeless到其他工作簿启动用户窗体。

 Private Sub Workbook_Open() UserForm1.Show vbModeless End Sub 

vbModeless将启动表单,但也将允许您的macros运行。

运行macros之前closures其他用户窗体。

 Sub CloseOtherUserForms() Dim frm As UserForm For Each frm In UserForms If Not TypeName(frm) = "MacroForm" Then Unload frm End If Next End Sub