27.05.2005, 08:26 | #1 |
MaratRZ@mail.ru
|
Как проинициализировать COM уже запущенным приложением (Excel)?
Всем привет!
Не подскажет ли кто-нибудь как можно реализовать следующее: У пользователя УЖЕ запущен один экземпляр Excel, нет ли возможности проинициализировать COM-объект в Axapta именно ЭТИМ приложением? COM com1 = new COM ("Excel.Application") создает НОВЫЙ экземпляр приложения.... :/ Заранее благодарен за совет |
|
27.05.2005, 09:35 | #2 |
Участник
|
COM::getObject?
|
|
27.05.2005, 09:44 | #3 |
MaratRZ@mail.ru
|
....
спасибо |
|
23.04.2007, 16:04 | #4 |
Moderator
|
на заметку
Дозвольте присоседиться со своим "пятачком". Потребовалось влезть в уже работающий скрытый экземпляр Excel: длительный вывод данных завис и нужно было посмотреть, в чём дело. Запускать весь процесс заново с visible = true не хотелось - в целях экономии времени (место, где поставить visible = true еще нужно было искать в чужом коде). Визуализироваться помог такой джобик, запущенный из другой сессии Аксапты (предварительно все другие видимые экземпляры Excel были закрыты - в Task Manager'е оставался только этот единственный скрытый "зависший" Excel):
X++: static void Show_Excel(Args _args) { COM xlApp; xlApp = COM::getObject('Excel.Application'); xlApp.Visible(true); } X++: static void Show_Excel(Args _args) { ; COM::getObject('Excel.Application').Visible(true); } P.S. А если под рукой вдруг нет Аксапты или не хочется создавать джоб, то можно открыть зависший Excel из другого приложения Office, например, из Word при помощи такого кода VBA: Код: Sub Show_Excel_From_Word() Dim xlApp As Object Set xlApp = GetObject(, "Excel.Application") xlApp.Visible = True End Sub Последний раз редактировалось Gustav; 06.07.2007 в 18:44. Причина: добавил код VBA, так как самому потребовалось прибегнуть |
|