我正在从不同的工作簿运行一个宏,所以一开始我确保检查该工作簿是否打开,如果没有,则打开它,但是当程序访问宏时,它会重新打开工作簿,所以我最终打开了两次! 为什么会发生这种情况以及如何避免它,请参阅下面的代码以供参考。
Private Sub Workbook_Open()
Dim Thisbook As Workbook
Dim Shev As Application
If IsWBOpen("ShevgenII") Then GoTo Checkup Else 'this step runs a function that checks the names of all open workbooks
Set Thisbook = ActiveWorkbook
Set Shev = Workbooks.Open(Filename:="file:///\FPSFILES1ReviewPricingMacro DataShevgenII.xlsb", ReadOnly:=True).NewWindow
Shev.Visible = False
Thisbook.Activate
Checkup:
Application.Run "ShevgenII.xlsb!Updates"
End Sub
不清楚为什么Shev
是一个Application
对象,我希望这里有一个类型不匹配错误(您将其分配给Window
引用(:
Dim Shev As Application Set Shev = Workbooks.Open(path, ReadOnly:=True).NewWindow Shev.Visible = False
试试这个:
Dim Shev As Workbook
Set Shev = Workbooks.Open(path, ReadOnly:=True)
Shev.Windows(1).Visible = False
在标签"checkup"之前写下"exit sub"。