|
Не завершается процесс Excel. Остается висеть. Почему ? | ☑ | ||
---|---|---|---|---|
0
lim9
25.07.16
✎
10:54
|
Попытка
Эксель = Новый COMОбъект("Excel.Application"); ПолноеИмяФайла="D:\test.xls"; Книга = Эксель.WorkBooks.Open(ПолноеИмяФайла); // Ошибка здесь ! Лист = Книга.ActiveSheet(); RangeAll = Лист.UsedRange; ЧислоКолонок = RangeAll.Columns.Count; ЧислоСтрок = RangeAll.Rows.Count; Для с = ПерваяСтрока По ПоследняяСтрока Цикл Код = Лист.Cells(с, 1).Value; КонецЦикла; //закроем Эксель //Эксель.ActiveWorkbook.Save(); Эксель.WorkBooks.close(); Эксель.Application.Quit(); Эксель.Quit(); Лист = неопределено; Книга = неопределено; Эксель = неопределено; Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; Права все есть. Делаю на домашнем компе. Вручную файл открывается без проблем. |
|||
1
Timon1405
25.07.16
✎
10:57
|
текст ошибки предлагается угадать?
|
|||
2
Fedor-1971
25.07.16
✎
10:58
|
(0) Эксель.WorkBooks.close(0); - закрыть без дурацких вопросов
|
|||
3
Gary417
25.07.16
✎
10:59
|
(0) в исключении надо дополнительно сделать
Эксель.Application.Quit(); Эксель.Quit(); иначе при возникновении ошибок загрузки логично что эксель останется висеть |
|||
4
lim9
25.07.16
✎
11:00
|
(1) - а самом деле ошибки нет, это старый комент
|
|||
5
lim9
25.07.16
✎
11:00
|
(2) (3) - так выполняется без ошибки!
А остается висеть все равно |
|||
6
lim9
25.07.16
✎
11:01
|
Попытка
Эксель = Новый COMОбъект("Excel.Application"); ПолноеИмяФайла="D:\test.xls"; Книга = Эксель.WorkBooks.Open(ПолноеИмяФайла); Лист = Книга.ActiveSheet(); RangeAll = Лист.UsedRange; ЧислоКолонок = RangeAll.Columns.Count; ЧислоСтрок = RangeAll.Rows.Count; Для с = ПерваяСтрока По ПоследняяСтрока Цикл Код = Лист.Cells(с, 1).Value; КонецЦикла; //закроем Эксель //Эксель.ActiveWorkbook.Save(); Эксель.WorkBooks.close(); Эксель.Application.Quit(); Эксель.Quit(); Лист = неопределено; Книга = неопределено; Эксель = неопределено; Исключение Сообщить(ОписаниеОшибки()); //закроем Эксель //Эксель.ActiveWorkbook.Save(); Эксель.WorkBooks.close(); Эксель.Application.Quit(); Эксель.Quit(); Лист = неопределено; Книга = неопределено; Эксель = неопределено; КонецПопытки; то же самое - остается висеть |
|||
7
vde69
25.07.16
✎
11:02
|
http://catalog.mista.ru/public/57401/
Процедура EXCEL_РазорватьСвязь (Соответстие) Экспорт Попытка Соответстие["EXCEL"].DisplayAlerts = 0; Соответстие["ExcelФайл"].Close(); Соответстие["EXCEL"].DisplayAlerts = 1; Соответстие["EXCEL"].Quit(); Соответстие["EXCEL"] = Неопределено; Исключение #Если Клиент Тогда Сообщить(ОписаниеОшибки()); #КонецЕсли КонецПопытки; КонецПроцедуры |
|||
8
Fedor-1971
25.07.16
✎
11:06
|
(6) блин, ты читать умеешь?
Эксель.WorkBooks.close(); - где 0 в параметре как в (2)? В интерактивном режиме он тебя спрашивает "Точно хочешь закрыть?" (дальше много нецензурных слов) Эксель.Application.Quit(); - вот этим ты ему порвал шаблон, у тебя Эксель уже Application Эксель.Quit(); - ну а тут правильно закрыл И перед экспериментами поснимай все задачи Экселя, для чистоты системы. |
|||
9
lim9
25.07.16
✎
11:14
|
Попытка
Эксель = Новый COMОбъект("Excel.Application"); ПолноеИмяФайла="D:\test.xls"; Книга = Эксель.WorkBooks.Open(ПолноеИмяФайла); Лист = Книга.ActiveSheet(); RangeAll = Лист.UsedRange; ЧислоКолонок = RangeAll.Columns.Count; ЧислоСтрок = RangeAll.Rows.Count; Для с = ПерваяСтрока По ПоследняяСтрока Цикл Код = Лист.Cells(с, 1).Value; КонецЦикла; //закроем Эксель //Эксель.ActiveWorkbook.Save(); Эксель.DisplayAlerts = 0; Книга.close(0); Эксель.DisplayAlerts = 1; Эксель.DisplayAlerts = 0; Эксель.WorkBooks.close(0); Эксель.DisplayAlerts = 1; Эксель.Application.Quit(); Эксель.Quit(); Лист = неопределено; Книга = неопределено; Эксель = неопределено; Исключение Сообщить(ОписаниеОшибки()); //закроем Эксель //Эксель.ActiveWorkbook.Save(); Эксель.DisplayAlerts = 0; Книга.close(0); Эксель.DisplayAlerts = 1; Эксель.DisplayAlerts = 0; Эксель.WorkBooks.close(0); Эксель.DisplayAlerts = 1; Эксель.Application.Quit(); Эксель.Quit(); Лист = неопределено; Книга = неопределено; Эксель = неопределено; КонецПопытки; - НЕ ПОМОГЛО. Все процессы предварительно закончил |
|||
10
vde69
25.07.16
✎
11:18
|
пробуй так:
Попытка Эксель = Новый COMОбъект("Excel.Application"); ПолноеИмяФайла="D:\test.xls"; Книга = Эксель.WorkBooks.Open(ПолноеИмяФайла); Лист = Книга.ActiveSheet(); RangeAll = Лист.UsedRange; ЧислоКолонок = RangeAll.Columns.Count; ЧислоСтрок = RangeAll.Rows.Count; Для с = ПерваяСтрока По ПоследняяСтрока Цикл Код = Лист.Cells(с, 1).Value; КонецЦикла; Лист = неопределено; Эксель.DisplayAlerts = 0; Книга.close(0); Эксель.DisplayAlerts = 1; Эксель.Quit(); Эксель = неопределено; Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; |
|||
11
Fedor-1971
25.07.16
✎
11:19
|
(9) да уж, вот это:
Эксель.DisplayAlerts = 0; Книга.close(0); - закрыл книгу Эксель.DisplayAlerts = 1; Эксель.DisplayAlerts = 0; Эксель.WorkBooks.close(0); - опять закрыл книгу Эксель.DisplayAlerts = 1; Эксель.Application.Quit(); - порвал шаблон Экселю Эксель.Quit(); - попытался закрыть оный просто 5. Слов нет, буквы пока ещё есть. Вот тебе счасце: Книга.close(0); Эксель.Quit(); Когда копипастишь код, хотя бы удосужься его понять. |
|||
12
vde69
25.07.16
✎
11:20
|
(10) +
и перед пробой посмотри в процессах ексель, он может висеть без видимых форм - тогда прибей все процессы екселя перед пробой |
|||
13
vde69
25.07.16
✎
11:21
|
(11) у него не закрывался так как "Лист" это COM который нужно убить раньше всего....
|
|||
14
lim9
25.07.16
✎
11:21
|
(11) - а так сделал потому как уже блин задолбался
(12) - все убил! написал в (9) |
|||
15
vde69
25.07.16
✎
11:22
|
и еще занули "RangeAll" перед листом !!!!!!
|
|||
16
vde69
25.07.16
✎
11:24
|
Попытка
Эксель = Новый COMОбъект("Excel.Application"); ПолноеИмяФайла="D:\test.xls"; Книга = Эксель.WorkBooks.Open(ПолноеИмяФайла); Лист = Книга.ActiveSheet(); RangeAll = Лист.UsedRange; ЧислоКолонок = RangeAll.Columns.Count; ЧислоСтрок = RangeAll.Rows.Count; Для с = ПерваяСтрока По ПоследняяСтрока Цикл Код = Лист.Cells(с, 1).Value; КонецЦикла; // порядок прибития переменных хранящих COM важен !!! RangeAll = неопределено; Лист = неопределено; Эксель.DisplayAlerts = 0; Книга.close(0); Эксель.DisplayAlerts = 1; Эксель.Quit(); Эксель = неопределено; Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; |
|||
17
lim9
25.07.16
✎
11:24
|
Сделал как в (11) :
Книга.close(0); Эксель.Quit(); - не помогло! (10) - тоже делал - ничего не изменилось. |
|||
18
Fedor-1971
25.07.16
✎
11:28
|
(17) перезагрузи комп
(13) обычно, достаточно закрыть книгу, Лист - это просто переменная, СОМ - Эксель, при открытой книге не завершается. |
|||
19
lim9
25.07.16
✎
11:32
|
помогла перезагрузка! Всем спасибо!
..... блиин такая тупость ваще |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |