Ich habe ein Makro, das eine neue Arbeitsmappe öffnet und dann aktivieren (Fokus) auf die erste Arbeitsmappe.Workbooks.open Rückkehr vor dem Fokus (Excel 2010 und 2016)
Code:
Set mainWorkbook = ActiveWorkbook
Set bdWorkbook = Workbooks.Open(FileName:="Another.xlsm", ReadOnly:=True)
mainWorkbook.Activate
Ich habe diesen Code bekam in Excel 2007 arbeiten, aber ich habe ein Problem mit der geöffneten Arbeitsmappe in Excel 2010 und später festgestellt. Das Problem tritt auf, weil Workbooks.Open vor Excel zu VBA zurückkehrt Aktivieren Sie die neue Arbeitsmappe [funktioniert problemlos mit Debugger].
Ich kann einen workarround macht ein Application.Wait (Now + TimeValue("0:00:01"))
verwenden, aber ......
EDIT: Mein Code, die Arbeit 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
'DoEvents' zwischen den letzten zwei Zeilen? Sonst 'aber ....' was? –
Schnelle Frage. Warum willst du es "aktivieren"? Nicht sicher, ob Sie [DIESE] (http://stackoverflow.com/questions/10714251/how-to-avoiding-using-select-in-excel-vba-macros/10718179#10718179) –
Hi @ScottHoltzman, DoEvents hat nicht funktioniert :-( – Makah