Всем добрый день. Ситуация: есть две книги - одна под условным названием "Макрос.xlsm", вторая - "Результат.xlsx". Книга "Макрос" при своем открытии создает вторую книгу, и по OnTime делает в "Результат" нужные вычисления. Такая заморочка потому, что вторя книга подключена к внешнему источнику данных, OnTime с этим подключением не работает и вносимые изменения ни каких реакций не вызывают. Это все или почти все) решено... Вопрос. Я закрываю книгу "Результат", "Макрос" мне не нужен - как закрыть и его? Забыл сказать, что окно "Макрос"- скрыто. Если нужен пример - выложу...
Всем добрый день. Ситуация: есть две книги - одна под условным названием "Макрос.xlsm", вторая - "Результат.xlsx". Книга "Макрос" при своем открытии создает вторую книгу, и по OnTime делает в "Результат" нужные вычисления. Такая заморочка потому, что вторя книга подключена к внешнему источнику данных, OnTime с этим подключением не работает и вносимые изменения ни каких реакций не вызывают. Это все или почти все) решено... Вопрос. Я закрываю книгу "Результат", "Макрос" мне не нужен - как закрыть и его? Забыл сказать, что окно "Макрос"- скрыто. Если нужен пример - выложу...Michael_S
В Personal в модуле ЭтаКНига в декларациях пишешь [vba]
Код
Private WithEvents App As Application ' объявляем объект Application для того, чтобы можно было отлавливать события других книг
[/vba] там же - обработчик события [vba]
Код
Private Sub Workbook_Open() Set App = Application ' назначаем объект Application для того, чтобы можно было отлавливать события других книг End Sub
[/vba] Теперь когда откроешь Excel (ну и, естественно, Personal тоже) или просто в ручную выполнишь эту процедуру Workbook_Open, то кроме (General) и Workbook в левом верхнем "комбобоксе" VBE появится возможность выбирать из списка ещё и объект App Выберешь его, а из правого "комбобокса" - процедуру обработки событие[vba]
Код
Private Sub App_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
End Sub
[/vba] А там уж у объекта Wb узнаешь его .Name и если оно = "Результат", то закрываешь книгу "Макрос"
В Personal в модуле ЭтаКНига в декларациях пишешь [vba]
Код
Private WithEvents App As Application ' объявляем объект Application для того, чтобы можно было отлавливать события других книг
[/vba] там же - обработчик события [vba]
Код
Private Sub Workbook_Open() Set App = Application ' назначаем объект Application для того, чтобы можно было отлавливать события других книг End Sub
[/vba] Теперь когда откроешь Excel (ну и, естественно, Personal тоже) или просто в ручную выполнишь эту процедуру Workbook_Open, то кроме (General) и Workbook в левом верхнем "комбобоксе" VBE появится возможность выбирать из списка ещё и объект App Выберешь его, а из правого "комбобокса" - процедуру обработки событие[vba]
Код
Private Sub App_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
End Sub
[/vba] А там уж у объекта Wb узнаешь его .Name и если оно = "Результат", то закрываешь книгу "Макрос"Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Пятница, 22.03.2013, 08:34
Sub Кнопка_Выход() Application.ScreenUpdating = 0 Windows("Макрос.xlsm").Activate ActiveWorkbook.Save 'Если надо ActiveWorkbook.Close Application.ScreenUpdating = 1 ActiveWorkbook.Save Application.Quit End Sub
[/vba]
Если закрывать через кнопку то так можно [vba]
Код
Sub Кнопка_Выход() Application.ScreenUpdating = 0 Windows("Макрос.xlsm").Activate ActiveWorkbook.Save 'Если надо ActiveWorkbook.Close Application.ScreenUpdating = 1 ActiveWorkbook.Save Application.Quit End Sub
Алексей, очень даже подходит. Справедливости ради первым мне это предложил Андрей (RAN) Здесь , но как этим пользоваться, я не понял. А тебе отдельное спасибо за разъяснение. Обоим "+"
Алексей, очень даже подходит. Справедливости ради первым мне это предложил Андрей (RAN) Здесь , но как этим пользоваться, я не понял. А тебе отдельное спасибо за разъяснение. Обоим "+" Michael_S
Леш, а зачем в персонал? Прямо в нужный файл. Файл из поста 3 при открытии открывает/создает книгу, сам прячется, а при закрытии созданной книги - закрывается.
Леш, а зачем в персонал? Прямо в нужный файл. Файл из поста 3 при открытии открывает/создает книгу, сам прячется, а при закрытии созданной книги - закрывается.RAN
А, ну да, точно! Перемудрил Просто в модуле ЭтаКнига файла "Результат" в обработчике события WorkbookBeforeClose прописать закрытие файла "Макрос"
А, ну да, точно! Перемудрил Просто в модуле ЭтаКнига файла "Результат" в обработчике события WorkbookBeforeClose прописать закрытие файла "Макрос"Alex_ST