Имя: Пароль:
IT
Админ
Подключиться к открытым по OLE Excel
0 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
3 dk
 
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=Файл Тогда
               Книга=ТекКнига;
               Прервать;
          КонецЕсли;
     КонецЦикла;
5 dk
 
07.12.17
12:44

    Попытка
        Скрипт=СоздатьОбъект("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();
    КонецЦикла;    

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