|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Зависание Excel в процессах
Подскажите рабочий метод как убить процесс при формировании, сохранении Excel.
Перепробовал все что можно, но на 5 - 10 раз все равно Excel зависает и висит в диспетчере задач. Код:
procedure TForm6.BitBtn6Click(Sender: TObject); var exApp: Variant; ExcelApp: OLEVariant; begin exApp:= CreateOleObject('Excel.Application'); exApp.WorkBooks.Open('C:\test\131у_1.xls'); exApp.Worksheets.Item['Лист1'].Range['AA16']:= Edit1.Text; exApp.Worksheets.Item['Лист1'].Range['Z19']:= Edit2.Text; exApp.Worksheets.Item['Лист1'].Range['Y18']:= Edit3.Text; exApp.Worksheets.Item['Лист1'].Range['Z21']:= Edit4.Text; exApp.Worksheets.Item['Лист1'].Range['AC19']:= ComboBox2.Text; exApp.Worksheets.Item['Лист1'].Range['Z20']:= ComboBox3.Text; exApp.Worksheets.Item['Лист1'].Range['Z26']:= ComboBox4.Text; exApp.Worksheets.Item['Лист1'].Range['AA25']:= ComboBox5.Text; exApp.Worksheets.Item['Лист1'].Range['AI27']:= ComboBox6.Text; exApp.Worksheets.Item['Лист1'].Range['Y13']:= ComboBox7.Text; exApp.Worksheets.Item['Лист1'].Range['Z14']:= DateTimePicker1.Date; exApp.Application.Quit; Последний раз редактировалось Admin, 01.09.2021 в 19:01. |
#2
|
|||
|
|||
Вообще, если другой процесс запросит создание такого же объекта (Excel), то пока тот не "отпустит", то будет висеть. Можно просто прибивать процесс, но тут есть всегда риск, что можно прибить процесс, запушенный пользователем.
Вообще, лучше всего всегда запрашивать существующий объект, и только если его нет, то тогда создавать новый. Тогда в худшем случае у тебя останется один процесс висеть. В принципе, это уже не страшно. Либо сам сдохнет со временем, ну либо будет убит системой при выключении. |
#3
|
||||
|
||||
Надо после закрытия документа выполнить:
Код:
exApp := Unassigned; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |