我有一个宏打开一个新的工作簿,然后激活(焦点)到第一个工作簿 .
Code:
Set mainWorkbook = ActiveWorkbook
Set bdWorkbook = Workbooks.Open(FileName:="Another.xlsm", ReadOnly:=True)
mainWorkbook.Activate
我已经在Excel 2007中使用了此代码,但我在Excel 2010及更高版本中遇到了打开工作簿的问题 . 出现此问题是因为Workbooks.Open在Excel激活新工作簿之前返回到VBA [使用调试器工作正常] .
我可以用 Application.Wait (Now + TimeValue("0:00:01"))
做一个workarround,但......
EDIT: My code that dosen't work in Excel 2016
Sub Sample()
Dim path As String
path = "A_PATH_FROM_MY_SERVER"
actualScreenUpdate = Application.ScreenUpdating
Application.ScreenUpdating = False
Set MainWB = ActiveWorkbook
Workbooks.Open fileName:=path, UpdateLinks:=False, ReadOnly:=isReadOnly
Set bdWB = ActiveWorkbook
DoEvents
MainWB.Activate
Application.ScreenUpdating = actualScreenUpdate
With Sheets(MY_BD_SHEET)
bdWB.ActiveSheet.UsedRange.Copy .[A1]
'....
End With
End Sub
1 回答
这是你想要的吗? ( Tried And Tested )
这将打开相关的工作簿并将其最小化,从而将焦点重新放在主工作簿上 .
EDIT
看到你当前的编辑 .
你正在激活
ScreenUpdating = False
?将其设置为True
然后激活它:)