СообЧа > База Знаний > Программы > MS Excel

Вопрос

Написал макрос для Excel. По ходу работы нужно считать данные из другой рабочей книги. Но в этой книге есть свой макрос, который начинает работать сразу при открытии книги. Причем как только он отработал, сразу закрывает Excel. Получается так.

Начинает работать макрос первой рабочей книги, потом он открывает вторую рабочую книгу, там начинает работать его макрос. Он перехватывает управление, добросовестно отрабатывает до конца и закрывает Excel. Без возврата в первый макрос.
Вопрос. Какой код нужно написать в первом макросе, чтобы открыть вторую рабочую книгу без активации его макроса?
Я открываю вторую рабочую книгу такой процедурой:

Sub Temper_Open()
Workbooks.Open ("c:\xls\Temper.xls"), ReadOnly:=True
Workbooks("c:\xls\Temper.xls").RunAutoMacros xlAutoDeactivate
End Sub

В моей процедуре деактивировать уже поздно, т.к. макрос уже отработал и требует сохранить изменения в файлах.

Ответ

Можно предложить такой вариант.
Во второй книге, в автозапускающемся макросе вставить проверку, какого нибудь параметра и на основе его значения делать вывод продолжать ли выполнение этого мароса или нет.
В качестве такого параметра может быть какая-нибудь public переменная в первом документе, значение которой можно проверить во втором документе.

Другой вариант, использовать какой-нибудь текстовый файл, в который записывать какое-нибудь значение, а во втором документе в автозапускающемся макросе проверять наличие или отсутствие этого значения и на основании этого делать выводы, продолжать или нет работу автозапусающегося макроса.

Из конференции Expert_FAQ



Copyright © 2000-2004 Сообщество Чайников
Контактная информация