【发布时间】:2016-04-01 17:52:06
【问题描述】:
我有一个宏可以打开一个新的工作簿,然后激活(聚焦)到第一个工作簿。
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")) 来解决问题,但是......
编辑:我的代码在 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
【问题讨论】:
-
DoEvents在最后两行之间?不然but....什么? -
快速提问。为什么要
Activate呢?不知道你有没有看到THIS -
嗨@ScottHoltzman,DoEvents 不起作用:-(
-
@ScottHoltzman 我不喜欢在我的代码中做变通。我需要等待多长时间才能放入 1? 10 秒?
-
嗨@SiddharthRout,我不在我的代码中使用 Select 和 Activate... 这就是为什么我想 Open() 并留在我的主工作簿中。