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

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

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

Подключиться к открытым по 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.

Список тем форума
Рекламное место пустует  Рекламное место пустует
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует