У меня есть макрос, который открывает новую книгу, а затем активирует (фокус) на первую книгу.
Code:
Set mainWorkbook = ActiveWorkbook
Set bdWorkbook = Workbooks.Open(FileName:="Another.xlsm", ReadOnly:=True)
mainWorkbook.Activate
У меня этот код работает в Excel 2007, но я столкнулся с проблемой с открытой книгой в Excel 2010 и более поздних версиях. Проблема возникает из-за того, что Workbooks.Open возвращается в VBA до того, как Excel активирует новую книгу [она отлично работает с отладчиком].
Я могу сделать обходной путь, используя 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....
что? - person Scott Holtzman   schedule 01.04.2016Activate
это? Не уверен, что вы видите ЭТО - person Siddharth Rout   schedule 01.04.2016With
для продолжения работы надMainWorkbook
... какWith Mainworkbook.Sheets(1) ... .Range("A1").Value = "Working" ... more code here ... End With
- person Scott Holtzman   schedule 01.04.2016https://github.com/makah/ExcelHelper/blob/master/OCFile.cls
(комментарии на португальском). Я просто хочу добавить этот класс, чтобы он снова работал. - person Makah   schedule 01.04.2016