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
,然后激活它:)