Вход | Регистрация

Информационные технологии ::

Метки:

Подключиться к открытым по OLE Excel

Я
   dk
 
07.12.17 - 12:05
Есть обработка которая подключается по OLE к Excel
Эта обработка зависла - 1с я убил а Excel остался висеть
И таких зависших Excel довольно много
Есть у кого готовый инструмент чтобы подключиться к зависшим Excel и активизировать их - показать экран
Думаю там какая-то ошибка в Excel и очень хотелось бы на нее взглянуть
 
 
   Ёпрст
 
1 - 07.12.17 - 12:13
Activate() не подходит, для книжки ?
   Ёпрст
 
2 - 07.12.17 - 12:13
прям с 1с-ины тем же апликейшеном + visible=1
   dk
 
3 - 07.12.17 - 12:15
как-то писал подобно но щас времени нет восстанавливать
тупо GetComObjet вместо New ComObject  было вроде
-------------------
(1) все книги созданы через New ComObject - т.е. новый аппликашен каждый раз
   Ёпрст
 
4 - 07.12.17 - 12:17
на вот, первый попашийся код:
Оле=СоздатьОбъект("Excel.Application");
    //поиск в открытом приложении
     Для i=1 По Оле.Workbooks.Count Цикл
          ТекКнига=Оле.Workbooks(i);
          Если ТекКнига.Name=Файл Тогда
               Книга=ТекКнига;
               Прервать;
          КонецЕсли;
     КонецЦикла;
   dk
 
5 - 07.12.17 - 12:44
[1C]
    Попытка
        Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl");
        Скрипт.language="javascript";
        Оле=Скрипт.Eval("GetObject("""",""Excel.Application"")");
    Исключение
        Сообщить("Не удалось открыть Excel");
        Возврат;
    КонецПопытки;    
    
    Оле.Visible = -1;
    Оле.WindowState = -4137;
    
    //поиск в открытом приложении
    Сообщить(12312312);    
    Для i=1 По Оле.Workbooks.Count Цикл
          ТекКнига=Оле.Workbooks(i);
          Сообщить(i);
          Сообщить(ТекКнига.Name);
    КонецЦикла;    

    Для i=1 По Оле.Windows.Count Цикл
        Оле.Windows(i).Activate();
    КонецЦикла;    
[/1C]
-------------
пока так подключаюсь
ничего интересного не нашел - тупо открывает Excel без книги
   Сияющий в темноте
 
6 - 07.12.17 - 13:05
Насколько я помню, GetObject позволяет подключиться только к одному экземпляру, а остальные в RunObjectTable просто не регистрируются, и подключиться к ним уже просто нельзя, а нужно "заваливать" через KillProcess.
   dk
 
7 - 07.12.17 - 13:12
угу, открывал, открывал
и похоже подключиться к OLE нельзя таким способом - жаль
прибил все процессы (
   Сияющий в темноте
 
8 - 07.12.17 - 13:16
(7) Если хочется завершать, то можно при создании объекта ставить Visible=True, тогда приложение Excel будет видно.
Также, можно делать сначала GetObject, чтобы получить предыдущий, и если не получилось, то выполнять CreateObject.


Список тем форума
  Рекламное место пустует
Здесь во втором сообщении вам дадут решение, а в двадцатом дадут правильное решение. Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует