Yeni bir Çalışma Kitabı açan ve ardından ilk Çalışma Kitabına (odağı) etkinleştiren bir makro var.Workbooks.open odaktan önce döner (Excel 2010 ve 2016)
Code:
Set mainWorkbook = ActiveWorkbook
Set bdWorkbook = Workbooks.Open(FileName:="Another.xlsm", ReadOnly:=True)
mainWorkbook.Activate
Ben Excel 2007 çalışma bu kodu var, ama daha sonra Excel 2010 ve açık çalışma kitabının ile bir sorunu karşılaştık. Sorun, Workbooks.Open Excel'den önce VBA'ya döndüğü için yeni çalışma kitabını etkinleştirir [hata ayıklayıcısını kullanarak iyi çalışır].
Ben Application.Wait (Now + TimeValue("0:00:01"))
kullanarak bir workarround yapabilirsiniz ama ......
DÜZENLEME: 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
Son iki satır arasında 'DoEvents'? Aksi halde 'ama ....' ne? –
Hızlı Soru. Neden onu aktif etmek istiyorsun? Gördüğünüzden emin değil [BU] (http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros/10718179#10718179) –
Merhaba @ScottHoltzman, DoEvents işe yaramadı :-( – Makah