Страницы: 1
RSS
Признак программного открытия книги
 
Всем добрый день!  
 
Вопрос в следующем: если я открываю книгу программными средствами (Workbooks.Open) существует ли у этой книги признак, по которому можно определить, что она открыта именно программно?  
 
Спасибо
 
{quote}{login=webley}{date=07.02.2011 10:52}{thema=Признак программного открытия книги}{post}Всем добрый день!  
 
Вопрос в следующем: если я открываю книгу программными средствами (Workbooks.Open) существует ли у этой книги признак, по которому можно определить, что она открыта именно программно?  
 
Спасибо{/post}{/quote}  
Так может программно и метку какую нибудь ставить в открытом файле ?
Спасибо
 
Жаль...  
С меткой скорее всего не вариант, т.к. я планировал пользоваться этим признаком от обратного - если книга открывается/закрывается из кода, то некоторые процедуры, запускаемые при открытии/закрытии книги, должны блокироваться.  Т.е. проверка должна осуществляться в том файле, который открывается, а не в том, где написан код. Попробую тогда поиграться с отключением обработки событий  
 
Спасибо
 
Копайте в сторону программного доступа к стеку вызова процедур (в VBE: View - Call Stack). Где-то я это видел...
 
{quote}{login=Казанский}{date=07.02.2011 12:09}{thema=}{post}Копайте в сторону программного доступа к стеку вызова процедур (в VBE: View - Call Stack). Где-то я это видел...{/post}{/quote}  
 
интересная идея. попробую
 
Кстати - если макрос, открывающий книгу, запускается кнопкой, то application.caller (в т.ч. в открываемой книге!) даст имя кнопки.  
Если макрос запускается через Alt+F8, то application.caller такой же, как при открытии через меню, т.е. Error.
 
А если в открываемом файле прописать что-то типа:  
Private Sub Workbook_Open()  
       If Me.Parent.Caption <> Application.Caption Then MsgBox "Open by VBA"  
End Sub
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
{quote}{login=Казанский}{date=07.02.2011 12:35}{thema=}{post}Кстати - если макрос, открывающий книгу, запускается кнопкой, то application.caller (в т.ч. в открываемой книге!) даст имя кнопки.  
Если макрос запускается через Alt+F8, то application.caller такой же, как при открытии через меню, т.е. Error.{/post}{/quote}  
 
Гениально! То что надо! Снимаю шляпу :)
 
{quote}{login=Alex_ST}{date=07.02.2011 12:44}{thema=}{post}А если в открываемом файле прописать что-то типа:  
Private Sub Workbook_Open()  
       If Me.Parent.Caption <> Application.Caption Then MsgBox "Open by VBA"  
End Sub{/post}{/quote}  
 
Так, к сожалению, не получилось - Me.Parent.Caption и Application.Caption равны не зависимо от способа запуска. Но все равно спасибо :)
Страницы: 1
Наверх