Подскажите как правильно завершить работу с Excel

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

nikola20
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 20.01.2006 (Пт) 13:29

Подскажите как правильно завершить работу с Excel

Сообщение nikola20 » 22.05.2007 (Вт) 13:01

Подскажите как правильно завершить работу в Excel? У меня это выглядит так:
Код: Выделить всё
        Dim XL As New Excel.Application
        Dim xls As New Excel.Worksheet
        ...............................
        XL.Quit()
        Application.DoEvents()
        XL = Nothing
        xls = Nothing
        Application.DoEvents()

Однако среди процессов (диспетчер задач Windows) процесс Excel остается не завершенным. Завершение происходит только после завершения работы самой программы...

Alex[fj]
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 278
Зарегистрирован: 17.02.2007 (Сб) 20:10
Откуда: Питер

Сообщение Alex[fj] » 22.05.2007 (Вт) 15:16

Ну... может TerminateProcess, если тебе процесс убить надо
Изображение
Стараюсь быть вполне хорошим (c) Лев Толстой

nikola20
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 20.01.2006 (Пт) 13:29

Сообщение nikola20 » 22.05.2007 (Вт) 15:27

Я уже думал об этом, пробовал так:
Код: Выделить всё
            Dim prcExcel As Process()
            prcExcel = Process.GetProcessesByName("EXCEL")
            prcExcel(0) = Nothing

но этот вариант не подходит, т.к. иногда необходимо оставлять незавершенной работу Excelя. И вот тут самое интересной: ручками закрываешь excel, а процесс остается незавершенным....

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 22.05.2007 (Вт) 16:56

Dim XL As New Excel.Application
...
XL.Quit
Изображение

Crack1
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 23.02.2003 (Вс) 22:28
Откуда: Russia

Сообщение Crack1 » 23.05.2007 (Ср) 4:42

Дак вот же недавно вроде это обсуждали...

Dim exlapp As Object
Dim exlbook As Object
Dim exlsheet As Object
...
...
exlapp.ActiveWorkbook.Close(SaveChanges:=False)
exlapp.Quit()
exlbook = Nothing
exlapp = Nothing

nikola20
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 20.01.2006 (Пт) 13:29

Сообщение nikola20 » 23.05.2007 (Ср) 10:49

Предложенный вариант я уже рассматривал. Результат аналогичный.
Может проблема в оффисе (я использую 2000)?
Самое интересное, что тот код который я указал в самом начале замечательно работает из под accessa, но с переходом на .net возникла эта проблема....

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 23.05.2007 (Ср) 10:52

поиск по форуму, уже обсуждалось, точно помню, потому, что сам такой вопрос задавали

Crack1
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 23.02.2003 (Вс) 22:28
Откуда: Russia

Сообщение Crack1 » 23.05.2007 (Ср) 11:36

nikola20 писал(а):Предложенный вариант я уже рассматривал. Результат аналогичный.
Может проблема в оффисе (я использую 2000)?
Самое интересное, что тот код который я указал в самом начале замечательно работает из под accessa, но с переходом на .net возникла эта проблема....


Пора тогда уже на 2003-й офис переходить... :)

Юджин
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 26.10.2005 (Ср) 12:49

Сообщение Юджин » 07.04.2008 (Пн) 13:12

пробовал на 2003 офисе. если с 2000 - "Убить Excel", то с 2003 - "Убить Excel 2". похоже есть 2 варианта - черех GC и через Process. Кстати, в одной из моих прог, работающих с excel2003, я использую тот же выход, что и автор топика, excel в процессах не задерживается. начал недавно писать новую прогу, копирнул из старой строки с excel - процесс начал зависать в памяти. :-(


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 96

    TopList