Тема: Как убить процесс Excel?
После работы макроса АКАД, который связывается с Excel, в win2000 остается висеть процесс Excel.exe.
Как его убрать?
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Как убить процесс Excel?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
После работы макроса АКАД, который связывается с Excel, в win2000 остается висеть процесс Excel.exe.
Как его убрать?
Я решил эту проблему. Только счас я на работе. А решеал я ее дома. Приду домой подскажу.
СЕРГЕЙ-заранее спасибо.
Очеть выручишь. Достало убивать процесс вручную.
Может проблема в том, что остались какие то указатели на объекты Excel? У меня была похожая проблема при экспорте из Лиспа в Excel - файл оставался "корявым". Когда прописал vlax-release-object за каждым объектом после того как объект далее использоваться не будет - все встало на свои места. Наверняка и в VBA что-то похожее.
VK-Как бы проблема заключается в том, что не знаю, что и как прописывать. Пробовал разные варианты- на все вылетаеют ошибки.
Option Explicit Dim Ex As Object '''''''''''''''''''''''бла бла бла '''''''''''''''''''''''''''''''''''''' Set Ex = CreateObject("Excel.Application") Ex.Visible = True Ex.Workbooks.Add '''''''''''''''''''''' For i = 1 To UBound(ReSult) Ex.Range("A" & i).Select Ex.ActiveCell.FormulaR1C1 = ReSult(i).name ' тело цикла Next i Ex.WindowState = xlMinimized ActiveWorkbook.SaveAs FileName:= _ ThisDrawing.Application.ActiveDocument.name & ".xls", _ FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _ False, CreateBackup:=False Ex.Quit
Может быть Ex.Quit то что тебе нужно?
Приведу пару фрагментов программы из Лиспа, думаю, разберетесь в последовательности вызова методов.
Начальный фрагмент (fnd - имя Excel'евского файла, в данном случае файл имеет всего один лист)
;; Установить связь c Excel (setq oex (vlax-get-or-create-object "Excel.Application.10")) ;_ VLA-объект приложение (if (null oex) ;_ Если связь не установлена, то аварийно завершить работу (progn (alert "Не удается запустить Microsoft Excel10") (exit)) ) ;_ if (vlax-put-property oex "Visible" :vlax-true) ;_ сделать Excel видимым (setq wkbs (vlax-get-property oex "Workbooks")) ; Указатель семейства Workbooks (setq awb (vlax-invoke-method wkbs "Open" fnd)) ; Открыть книгу и получить указатель книги (setq mainsh (vlax-get-property awb "ActiveSheet")) ; Указатель на активный лист
Далее получаем указатели на ячейки листа, работаем с ними, освобождаем указатели по мере того как объекты Excel'я больше не потребуются.
И конечный фрагмент
(vlax-release-object mainsh) ;_ освободить указатель на лист (vlax-invoke-method awb "Close" :vlax-true) ; Закрыть книгу (vlax-release-object awb) ;_ освободить указатель на книгу (vlax-release-object wkbs) ;_ освободить указатель на семейство книг (vlax-invoke-method oex "Quit") ; отключиться и закрыть Excel (vlax-release-object oex) ;_ освободить указатель на Excel
А в общем то, посмотрите статью Н.Полещука о COM технологии на cad.dp.ua. Главное - понять принципы управления.
"Ex.Quit" не работает.
Но ошибку не выдает. Буду разбираться дальше.
Для примера, который опубликовал Сергей -
set Ex = Nothing
И вообще я стараюсь всем объектным переменным по завершении их использования присвоить Nothing
СПАСИБО ВСЕМ!!!
Set Excel = Nothing
Set ExcelWorkbook = Nothing
Set ExcelSheet = Nothing
заработало.
> VK
Вообщее Excel не всегда освобождается, даже если отрелизить все что только можно. К примеру с Word-ом таких багов нету, все идет нормально. Проверено и то и другое.
Н. Полещук сам когда-то говорил, что Excel кривоват в работе.
А я могу добавить, что он кривоват в работе из Lisp. Т.к. из Делфей я таких выкрутасов не замечал. Из VBA наверное тоже получше. А все почему - да потому что эти языки к Wind-е поближе будут.
У меня тоже Lisp-прога с Excel работает. Так я уже подумываю о том, чтобы сделать внешнюю прогу-убивалку, а то сладу нет.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Как убить процесс Excel?
Форум работает на PunBB, при поддержке Informer Technologies, Inc