Добрый день! Подскажите плиз. МегаМакрос перебирает файлы эксель (xlsm) и одним из действий сохраняет его под другим именем. В перебираемых файлах есть МикроМакрос запускаемый по условию - вызов действия "сохранить как" и соответственно перехватывает выполнение МегаМакроса и портит мне весь кайф. Как мне при открытии файла с МикроМакросом отключить его выполнение выполнение или удалить (он там больше не нужен)? Спасибо во так не работает почемуто
Тут такой момент....RunAutoMacros это больше пережиток старых версий и оставлен для совместимости. Т.к. макросы Auto_Open и Auto_Close не срабатывают при программном открытии/закрытии книг(то же самое и auto_Activate/Deactivate). И чтобы можно было их запустить при программном открытии книг и создан данный метод. На данный момент Microsoft пишет, что предпочтительнее использовать события книги, а не автопроцедуры. Поэтому, возможно, на форуме их встретить сложно - практически не применяются(если бы все использовали автопроцедуры вместо Workbook_Open(и иже с ними) - уверен, встречали бы часто).
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
фигню спросил. вопрос фактически отсылает к первоначальному вопросу и поиску несуществующего параметра Workbook.Open типа RunMacro:= False ps. хотя могли бы и сделать )
Итак. Если Вы открываете программно книгу и в ней прописана автопроцедура Auto_Open - она не выполнится. Если откроете руками - выполнится. Если открываете программно книгу, в которой в модуле книги записано Workbbok_Open, то событие будет выполнено в любом случае. Если только перед открытием программно Вы не отключите выполнение событий:
Код
Application.EnableEvents = False
Workbook.Open
Не забудьте после выполнения кода вернуть в исходное положение:
Код
Application.EnableEvents = True
Так что замечание "могли бы и сделать" несправедливо - сделано давно :-)
И не забудьте у себя удалить строку:
Код
Workbooks(sFiles).RunAutoMacros xlAutoDeactivate
Т.к. она как раз и запускает событийную процедуру.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Юрий М такое приходило в голову, но это усложняет макрос. кроме того возникает порочный круг: чтобы сохранить книгу xlsm как xls надо отключить выполнение макроса (поскольку в ней есть Workbook_BeforeSave). а отключив макрос исчезает необходимость пересохранять книгу в xls
Дима дал нормальное объяснение, а я говорил не про сохранение в формате xls (макросы останутся), а про сохранение в обычную книгу (xlsx) - там макросы не живут.