Workbooks.open返回焦点之前(Excel 2010和2016)

我有一个macros打开一个新的工作簿,然后激活(焦点)到第一个工作簿。

Code: Set mainWorkbook = ActiveWorkbook Set bdWorkbook = Workbooks.Open(FileName:="Another.xlsm", ReadOnly:=True) mainWorkbook.Activate 

我有这个代码在Excel 2007中工作,但是我遇到了Excel 2010及更高版本中的打开工作簿的问题。 问题发生是因为Workbooks.Open在Excel之前返回到VBA激活新的工作簿[它使用debugging器正常工作]。

我可以使用Application.Wait (Now + TimeValue("0:00:01"))做一个workarround,但是……

编辑:我不能在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 

这是你想要的吗? ( 试验和testing

这将打开相关的工作簿,并将其最小化,从而将焦点返回到您的主要工作簿。

 Sub Sample() Dim wbThis As Workbook, wbThat As Workbook Set wbThis = ThisWorkbook Set wbThat = Workbooks.Open("C:\Users\Siddharth\Desktop\Sample.xlsx") DoEvents Application.WindowState = xlMinimized ' OR ActiveWindow.WindowState = xlMinimized End Sub 

编辑

看到你目前的编辑。

 MainWB.Activate Application.ScreenUpdating = actualScreenUpdate 

ScreenUpdating = False时你正在激活? 将其设置为True ,然后激活它:)