Страницы: 1
RSS
Автоматическое отслеживание открытия/закрытия файлов Excel
 
Доброго времени суток!  
 
Вот столкнулся с такой задачей.  
Есть открытый файл Excel, в котором работает Пользователь. Затем он открывает другой файл Excel и после каких-то там действий закрывает его.  
 
Каким образом это возможно отследить в Excel автоматически (я понимаю под словом "автоматически" макрос, который постоянно работает и следить за этим)?!  
 
Или это невозможно в Excel?    
 
Если нет, тогда, возможно есть возможность отслеживание макроса (определенного), хотя бы через заданное число времени?    
Тоесть, если он запущен, Пользователь спокойно работает, если - нет, тогда снова его запустить и Пользователь дальше спокойно работает :)
 
The_Prist, спасибо Вам большое за быстрый ответ и за ссылки!    
Это то, что и требовалось!  
 
Могу я Вас еще кое-что спросить, а именно, как возможно отследить запуск макроса во 2-й (не главной) с названием "Test" в нижеприведенном коде?!  
 
Private Sub App_WorkbookOpen(ByVal Wb As Workbook)  
'если макрос "Test" запущен тогда запускаем макрос "Stop"  
End Sub
 
The_Prist, извините меня за мои тугие пояснения, хотел (как лучше) подробно описать свою проблему. Впредь буду стараться четко и коротко задавать вопросы.    
 
Еще раз благодарю Вас за помощь!  
 
Осмелюсь попросить Вас коротко описать вот эту часть Вашего кода:  
 
Sub Test()  
bMacroOpen = True  
workbooks.Open "C:\file.xls"  
bMacroOpen = False  
End Sub
 
The_Prist, кажеться разобрался.  
А вот если книга закрываеться, тогда нужно так (Close):  
 
Private Sub App_WorkbookClose(ByVal Wb As Workbook)  
'если макрос "Test" запущен тогда запускаем макрос "Stop"  
if bMacroOpen = True Then Stop  
End Sub  
 
?!
 
Что-то у меня не получаеться... :(  
 
Вставил в ThisWorkbook вот этот код:  
Private WithEvents App As Application  
 
Private Sub Workbook_Open()  
   Set App = Application  
End Sub  
 
Private Sub App_WorkbookClose(ByVal Wb As Workbook)  
   If Wb.Name <> ThisWorkbook.Name Then  
       If bMacroOpen = False Then  
           Test  
       End If  
   End If  
End Sub  
 
в модуль1 это:  
Public bMacroOpen as boolean  
Sub Test()  
bMacroOpen = True  
workbooks.Open "C:\file.xls"  
bMacroOpen = False  
End Sub
 
The_Prist, все понял, исправлюсь! :)  
 
The_Prist, тоесть в приведенном выше примере все верно и должно работать и глобальную переменную bMacroOpen можно объявлять в любом модуле или только в ThisWorkbook?
 
The_Prist, здравствуйте!  
 
Такая ситуация в файле. Если "Private Sub App_WorkbookOpen" - все работает, но если я меняю "Open" на "Close" - ничего не происходит.  
 
Вот файл с примером.
 
The_Prist, спасибо Вам большое, так работает!  
 
А именно после закрытие файла (не перед закрытием) никак нельзя?
 
The_Prist, жалко конечно, пришлось воспользоваться "Activate". Еще раз Вам спасибо!
Страницы: 1
Читают тему
Наверх