Не приходит сообщение WorkbookOpen
От: DonTorchino Россия  
Дата: 02.07.09 09:05
Оценка:
Коллеги, помогите , кто чем может! Пишу add-in для Excel 2007 на C#, в нём есть необходимость ловить событие WorkbookOpen. В методе ThisAddin_Startup добавляю
this.Application.WorkbookOpen += new Microsoft.Office.Interop.Excel.AppEvents_WorkbookOpenEventHandler(Application_WorkbookOpen);


всё, как положено. Но вот в чём проблема: когда открываешь файл из самого Excel — событие приходит. Когда открываешь файл двойным кликом — событие приходит. А когда открываешь файл из командной строки с параметром ( excel.exe Book1.xlsx ) — то никакого события не приходит! Почему?! Кто-нибудь встречался с таким?
Re: Не приходит сообщение WorkbookOpen
От: DonTorchino Россия  
Дата: 03.07.09 05:07
Оценка:
Так никто и не знает? Что-то странное...
Re: Не приходит сообщение WorkbookOpen
От: Warturtle  
Дата: 03.07.09 09:33
Оценка:
Здравствуйте, DonTorchino, Вы писали:

DT>Коллеги, помогите , кто чем может! Пишу add-in для Excel 2007 на C#, в нём есть необходимость ловить событие WorkbookOpen. В методе ThisAddin_Startup добавляю

DT>
DT>this.Application.WorkbookOpen += new Microsoft.Office.Interop.Excel.AppEvents_WorkbookOpenEventHandler(Application_WorkbookOpen);
DT>


DT>всё, как положено. Но вот в чём проблема: когда открываешь файл из самого Excel — событие приходит. Когда открываешь файл двойным кликом — событие приходит. А когда открываешь файл из командной строки с параметром ( excel.exe Book1.xlsx ) — то никакого события не приходит! Почему?! Кто-нибудь встречался с таким?

Наверное add-in загружается после того этого события. Проверяй в OnConnection свойство Excel.Application.ActiveWorkbook (или коллекцию Excel.Application.Workbooks — смотря что тебе нужно).
Re[2]: Не приходит сообщение WorkbookOpen
От: DonTorchino Россия  
Дата: 06.07.09 14:44
Оценка:
Здравствуйте, Warturtle, Вы писали:

W>Здравствуйте, DonTorchino, Вы писали:


DT>>Коллеги, помогите , кто чем может! Пишу add-in для Excel 2007 на C#, в нём есть необходимость ловить событие WorkbookOpen. В методе ThisAddin_Startup добавляю

DT>>
DT>>this.Application.WorkbookOpen += new Microsoft.Office.Interop.Excel.AppEvents_WorkbookOpenEventHandler(Application_WorkbookOpen);
DT>>


DT>>всё, как положено. Но вот в чём проблема: когда открываешь файл из самого Excel — событие приходит. Когда открываешь файл двойным кликом — событие приходит. А когда открываешь файл из командной строки с параметром ( excel.exe Book1.xlsx ) — то никакого события не приходит! Почему?! Кто-нибудь встречался с таким?

W>Наверное add-in загружается после того этого события. Проверяй в OnConnection свойство Excel.Application.ActiveWorkbook (или коллекцию Excel.Application.Workbooks — смотря что тебе нужно).

Спасибо за помощь, хотя в 2007 экселе нет OnConnection — есть ThisAddin_Startup. Тем не менее, сделал там проверку свойства Excel.Application.ActiveWorkbook — помогло!
Re[3]: Не приходит сообщение WorkbookOpen
От: Warturtle  
Дата: 15.07.09 14:09
Оценка:
Здравствуйте, DonTorchino, Вы писали:

DT>Здравствуйте, Warturtle, Вы писали:


W>>Здравствуйте, DonTorchino, Вы писали:


DT>>>Коллеги, помогите , кто чем может! Пишу add-in для Excel 2007 на C#, в нём есть необходимость ловить событие WorkbookOpen. В методе ThisAddin_Startup добавляю

DT>>>
DT>>>this.Application.WorkbookOpen += new Microsoft.Office.Interop.Excel.AppEvents_WorkbookOpenEventHandler(Application_WorkbookOpen);
DT>>>


DT>>>всё, как положено. Но вот в чём проблема: когда открываешь файл из самого Excel — событие приходит. Когда открываешь файл двойным кликом — событие приходит. А когда открываешь файл из командной строки с параметром ( excel.exe Book1.xlsx ) — то никакого события не приходит! Почему?! Кто-нибудь встречался с таким?

W>>Наверное add-in загружается после того этого события. Проверяй в OnConnection свойство Excel.Application.ActiveWorkbook (или коллекцию Excel.Application.Workbooks — смотря что тебе нужно).

DT>Спасибо за помощь, хотя в 2007 экселе нет OnConnection — есть ThisAddin_Startup. Тем не менее, сделал там проверку свойства Excel.Application.ActiveWorkbook — помогло!

OnConnection есть — это вроде не от версии офиса зависит — просто у тебя не совсем "честный" add-in, а через дополнительную прослойку в виде VSTO (Visual Studio Tools for Office), если я правильно понимаю.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.