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