Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как отследить закрытие другой книги? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Как отследить закрытие другой книги?
Как отследить закрытие другой книги?
Michael_S Дата: Четверг, 21.03.2013, 22:02 | Сообщение № 1
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Всем добрый день. Ситуация: есть две книги - одна под условным названием "Макрос.xlsm", вторая - "Результат.xlsx".
Книга "Макрос" при своем открытии создает вторую книгу, и по OnTime делает в "Результат" нужные вычисления. Такая заморочка потому, что вторя книга подключена к внешнему источнику данных, OnTime с этим подключением не работает и вносимые изменения ни каких реакций не вызывают. Это все или почти все) решено...
Вопрос.
Я закрываю книгу "Результат", "Макрос" мне не нужен - как закрыть и его? Забыл сказать, что окно "Макрос"- скрыто.
Если нужен пример - выложу...
 
Ответить
СообщениеВсем добрый день. Ситуация: есть две книги - одна под условным названием "Макрос.xlsm", вторая - "Результат.xlsx".
Книга "Макрос" при своем открытии создает вторую книгу, и по OnTime делает в "Результат" нужные вычисления. Такая заморочка потому, что вторя книга подключена к внешнему источнику данных, OnTime с этим подключением не работает и вносимые изменения ни каких реакций не вызывают. Это все или почти все) решено...
Вопрос.
Я закрываю книгу "Результат", "Макрос" мне не нужен - как закрыть и его? Забыл сказать, что окно "Макрос"- скрыто.
Если нужен пример - выложу...

Автор - Michael_S
Дата добавления - 21.03.2013 в 22:02
Alex_ST Дата: Четверг, 21.03.2013, 22:25 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

2003
В 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 и если оно = "Результат", то закрываешь книгу "Макрос"



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Пятница, 22.03.2013, 08:34
 
Ответить
СообщениеВ 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
Дата добавления - 21.03.2013 в 22:25
RAN Дата: Четверг, 21.03.2013, 22:44 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Из файла, на который давал ссылку вчера
К сообщению приложен файл: 6925662.xls (34.5 Kb)


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеИз файла, на который давал ссылку вчера

Автор - RAN
Дата добавления - 21.03.2013 в 22:44
Michael_S Дата: Четверг, 21.03.2013, 22:49 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Андрей, я ж вчера в стартовом посте писал
Цитата
Только мне не надо направление, пальцем укажите,
biggrin
Я тот файл смотрел, и даже на комп сохранил, но что там происходит - так и не понял. surprised
 
Ответить
СообщениеАндрей, я ж вчера в стартовом посте писал
Цитата
Только мне не надо направление, пальцем укажите,
biggrin
Я тот файл смотрел, и даже на комп сохранил, но что там происходит - так и не понял. surprised

Автор - Michael_S
Дата добавления - 21.03.2013 в 22:49
RAN Дата: Четверг, 21.03.2013, 22:56 | Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
А я вчера до конца не понял, на что, и как далеко указывать надо.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеА я вчера до конца не понял, на что, и как далеко указывать надо.

Автор - RAN
Дата добавления - 21.03.2013 в 22:56
Wasilich Дата: Четверг, 21.03.2013, 23:30 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Если закрывать через кнопку то так можно
[vba]
Код
Sub Кнопка_Выход()
      Application.ScreenUpdating = 0
      Windows("Макрос.xlsm").Activate
      ActiveWorkbook.Save 'Если надо
      ActiveWorkbook.Close
      Application.ScreenUpdating = 1
      ActiveWorkbook.Save
      Application.Quit
End Sub
[/vba]


Сообщение отредактировал Wasilic - Четверг, 21.03.2013, 23:32
 
Ответить
СообщениеЕсли закрывать через кнопку то так можно
[vba]
Код
Sub Кнопка_Выход()
      Application.ScreenUpdating = 0
      Windows("Макрос.xlsm").Activate
      ActiveWorkbook.Save 'Если надо
      ActiveWorkbook.Close
      Application.ScreenUpdating = 1
      ActiveWorkbook.Save
      Application.Quit
End Sub
[/vba]

Автор - Wasilich
Дата добавления - 21.03.2013 в 23:30
Alex_ST Дата: Пятница, 22.03.2013, 08:32 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

2003
Михаил, а то, что я предложил - отлавливать события - разве не подходит?



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеМихаил, а то, что я предложил - отлавливать события - разве не подходит?

Автор - Alex_ST
Дата добавления - 22.03.2013 в 08:32
Michael_S Дата: Пятница, 22.03.2013, 09:13 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Алексей, очень даже подходит. Справедливости ради первым мне это предложил Андрей (RAN) Здесь , но как этим пользоваться, я не понял. А тебе отдельное спасибо за разъяснение. Обоим "+" smile
 
Ответить
СообщениеАлексей, очень даже подходит. Справедливости ради первым мне это предложил Андрей (RAN) Здесь , но как этим пользоваться, я не понял. А тебе отдельное спасибо за разъяснение. Обоим "+" smile

Автор - Michael_S
Дата добавления - 22.03.2013 в 09:13
RAN Дата: Пятница, 22.03.2013, 09:48 | Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Леш, а зачем в персонал? Прямо в нужный файл. Файл из поста 3 при открытии открывает/создает книгу, сам прячется, а при закрытии созданной книги - закрывается.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеЛеш, а зачем в персонал? Прямо в нужный файл. Файл из поста 3 при открытии открывает/создает книгу, сам прячется, а при закрытии созданной книги - закрывается.

Автор - RAN
Дата добавления - 22.03.2013 в 09:48
Alex_ST Дата: Пятница, 22.03.2013, 11:44 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

2003
А, ну да, точно! Перемудрил sad
Просто в модуле ЭтаКнига файла "Результат" в обработчике события WorkbookBeforeClose прописать закрытие файла "Макрос"



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеА, ну да, точно! Перемудрил sad
Просто в модуле ЭтаКнига файла "Результат" в обработчике события WorkbookBeforeClose прописать закрытие файла "Макрос"

Автор - Alex_ST
Дата добавления - 22.03.2013 в 11:44
Michael_S Дата: Пятница, 22.03.2013, 12:43 | Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Цитата (Alex_ST)
Просто в модуле ЭтаКнига файла "Результат" в обработчике события WorkbookBeforeClose прописать закрытие файла "Макрос"

вообще-то я так и пОнял, имея ввиду пример Андрея (который видел раньше, но сразу не понЯл) smile
 
Ответить
Сообщение
Цитата (Alex_ST)
Просто в модуле ЭтаКнига файла "Результат" в обработчике события WorkbookBeforeClose прописать закрытие файла "Макрос"

вообще-то я так и пОнял, имея ввиду пример Андрея (который видел раньше, но сразу не понЯл) smile

Автор - Michael_S
Дата добавления - 22.03.2013 в 12:43
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Как отследить закрытие другой книги?
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!