AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.05.2005, 08:26   #1  
MaratRZ is offline
MaratRZ
MaratRZ@mail.ru
 
26 / 35 (2) +++
Регистрация: 11.03.2005
? Как проинициализировать COM уже запущенным приложением (Excel)?
Всем привет!

Не подскажет ли кто-нибудь как можно реализовать следующее:

У пользователя УЖЕ запущен один экземпляр Excel, нет ли возможности проинициализировать COM-объект в Axapta именно ЭТИМ приложением?

COM com1 = new COM ("Excel.Application") создает НОВЫЙ экземпляр приложения.... :/

Заранее благодарен за совет
Старый 27.05.2005, 09:35   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
COM::getObject?
Старый 27.05.2005, 09:44   #3  
MaratRZ is offline
MaratRZ
MaratRZ@mail.ru
 
26 / 35 (2) +++
Регистрация: 11.03.2005
....

спасибо
Старый 23.04.2007, 16:04   #4  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
на заметку
Дозвольте присоседиться со своим "пятачком". Потребовалось влезть в уже работающий скрытый экземпляр 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, так как самому потребовалось прибегнуть
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Dynamics AX: ERPLive.com - What's this? Blog bot DAX Blogs 0 26.09.2008 04:19
Arijit Basu: Reporting & BI in AX: An Overview [Level 100] Blog bot DAX Blogs 0 07.01.2008 16:01
Работа с Excel через COM в DAX 4.0 Paul_ST DAX: Программирование 4 17.07.2007 16:45
Fred Shen: Failed to create COM objects on AX 4 AOS Blog bot DAX Blogs 0 08.12.2006 19:14
"Такая строка уже сущ." при переносе из Excel! Zelenhof DAX: Программирование 2 13.01.2003 13:41

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:35.