如果未提供命令 Application.run 以打开工作簿,为什么引用的工作簿会打开两次?



我正在从不同的工作簿运行一个宏,所以一开始我确保检查该工作簿是否打开,如果没有,则打开它,但是当程序访问宏时,它会重新打开工作簿,所以我最终打开了两次! 为什么会发生这种情况以及如何避免它,请参阅下面的代码以供参考。

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"。

最新更新