Мяв!
Возникла проблема с работой макроса в Excel 2016(32).
Код был создан и отлажен в Excel 2010(32).
Для возможности считывания данных вне зависимости от состояния файла (открыт/нет||на каком компе), файл открывается в новом экземпляре Excel в режиме ReadOnly.
Проблема 1
Проблема 2
После пристреливания Excel, отключается обработка событий не только во втором экземпляре, но и в первом. Более того, включить ее перезагрузкой Excel не удается, только выполнив Application.EnableEvents = True. Т.е при повторном запуске Excel Workbook_Open не срабатывает.
Проблемный фрагмент кода прилагаю.
Куда можно/нужно поглядеть?
PS Если важно
Тестировалось на локальном компе, фактически файлы на сервере.
суть кода, обозначенного "............" - синхронизация файлов сотрудников и босса.
Возникла проблема с работой макроса в Excel 2016(32).
Код был создан и отлажен в Excel 2010(32).
Для возможности считывания данных вне зависимости от состояния файла (открыт/нет||на каком компе), файл открывается в новом экземпляре Excel в режиме ReadOnly.
Проблема 1
Цитата |
---|
excel залипает на этой строке: Set wbOpen = .Workbooks.Open(kas, , True) После чего приходится его пристреливать |
После пристреливания Excel, отключается обработка событий не только во втором экземпляре, но и в первом. Более того, включить ее перезагрузкой Excel не удается, только выполнив Application.EnableEvents = True. Т.е при повторном запуске Excel Workbook_Open не срабатывает.
Проблемный фрагмент кода прилагаю.
Куда можно/нужно поглядеть?
Код |
---|
Private Sub Workbook_Open() Sheets("ОТЧЕТ").Protect Password:="123", DrawingObjects:=True, Contents:=True, Scenarios:=True _ , AllowInsertingRows:=True, AllowDeletingRows:=True, AllowSorting:=True, _ AllowFiltering:=True, UserInterfaceOnly:=True meUpdate End Sub Sub meUpdate() '.......... Dim wbOpen As Workbook Dim xlApp As Application With Me.Sheets("ОТЧЕТ") '....................... kas = Me.Sheets("ДАНО").ListObjects("tblKassa").DataBodyRange(1).Value Set xlApp = New Excel.Application.EnableEvents = False With xlApp .EnableEvents = False ' .Visible = True Set wbOpen = .Workbooks.Open(kas, , True) With wbOpen.Sheets("КАССА") '....................... End With End Sub |
PS Если важно
Тестировалось на локальном компе, фактически файлы на сервере.
суть кода, обозначенного "............" - синхронизация файлов сотрудников и босса.