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