powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Закрыть повисшую задачу/открытый файл Excel
15 сообщений из 15, страница 1 из 1
Закрыть повисшую задачу/открытый файл Excel
    #39785414
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
Уважаемый форум,

Пошерстил в инете, но вразумительного ничего не нашел.
Задача простая: при подвисании Экселя необходимо закрыть подвисший файл в манагере задач из Access VBA. Пока нашел только
Код: sql
1.
taskkill /F /IM excel.exe

. Но встает задача определения ВСЕХ открытых экземпляров Excel независимо от имени открытого файла. Как это сделать?

Другими словами: необходимо проверить, есть ли открытые задачи Excel и закрыть их taskkill-ом. Спасибо!
...
Рейтинг: 0 / 0
Закрыть повисшую задачу/открытый файл Excel
    #39785420
yoichi730
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IFK,
1. Кто и как определяет что приложение повисло?
2. Озвучте пример такой ситуации...
3. Если есть "taskkill" то как его запускать? bat файл? Скрипт?? По какому событию??
...
Рейтинг: 0 / 0
Закрыть повисшую задачу/открытый файл Excel
    #39785426
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IFKУважаемый форум,

Пошерстил в инете, но вразумительного ничего не нашел.
Задача простая: при подвисании Экселя необходимо закрыть подвисший файл в манагере задач из Access VBA. Пока нашел только
Код: sql
1.
taskkill /F /IM excel.exe


. Но встает задача определения ВСЕХ открытых экземпляров Excel независимо от имени открытого файла. Как это сделать?

Другими словами: необходимо проверить, есть ли открытые задачи Excel и закрыть их taskkill-ом. Спасибо!
Через API находишь процесс и убиваешь его
...
Рейтинг: 0 / 0
Закрыть повисшую задачу/открытый файл Excel
    #39785432
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
ROI, отлично, пожалуйста, можно подробности?
...
Рейтинг: 0 / 0
Закрыть повисшую задачу/открытый файл Excel
    #39785436
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
yoichi730, пример: приложение осуществляло запись в Эксель, произошел сбой и приложение принудительно завершило запись по Error, но файл остался открытым. При попытке повторить запись в файл, его открытый экземпляр блокирует попытку. Его нужно принудительно закрыть через менеджер процессов. Это я и пытаюсь сделать из кода.

Запуск taskkill осуществляется через Shell.
...
Рейтинг: 0 / 0
Закрыть повисшую задачу/открытый файл Excel
    #39785440
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может причину лечить?
...
Рейтинг: 0 / 0
Закрыть повисшую задачу/открытый файл Excel
    #39785449
yoichi730
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если ты заполняешь Excel из Access через com объект Excel, то сделай ему просто...

Код: vbnet
1.
objXlApp.Quit



А вот как победить диалоговое окно "Сохранить изменения ?" в открытом сгенерированном файле, ищи сам (мне лениво гуглить), все через объект делается..
...
Рейтинг: 0 / 0
Закрыть повисшую задачу/открытый файл Excel
    #39785450
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
yoichi730, спасибо, это и так понятно. Как определить, открыт ли хоть один такой объект, вот в чем вопрос?
...
Рейтинг: 0 / 0
Закрыть повисшую задачу/открытый файл Excel
    #39785451
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
Панург, пробую через обработку ошибок с принудительным закрытием, но не уверен, что получится.
...
Рейтинг: 0 / 0
Закрыть повисшую задачу/открытый файл Excel
    #39785454
yoichi730
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не понимаю..
Есть процедура заполнения файла, если всплывает ошибка в процессе, то GoTo OyBlyaChotoNeTo

Код: vbnet
1.
2.
OyBlyaChotoNeTo:
    ojbExApp.Quit



Все. Профит!
...
Рейтинг: 0 / 0
Закрыть повисшую задачу/открытый файл Excel
    #39785455
IFKКак определить, открыт ли хоть один такой объект, вот в чем вопрос?
Код: vbnet
1.
Set objXlApp = GetObject(,"Excel.Application")


и ловишь ошибку. Если ее нет (есть открытый Ёксель), то objXlApp.Quit

Вы выгружаете в существующий файл или создаете новый?
...
Рейтинг: 0 / 0
Закрыть повисшую задачу/открытый файл Excel
    #39785479
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
спасибо всем, реализовал так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
            Set xl = GetObject(, "excel.application")
            On Error GoTo 0
            If Not xl Is Nothing Then
                MsgBox "There are some Excel files still opened. These will be closed now.", vbExclamation
                For Each xbk In xl.Workbooks
                    If xbk.Saved = True Then
                        xbk.Close
                    Else:
                        If MsgBox("File " & xbk.Name & " will be closed. Do you want to save it?", vbExclamation + vbYesNo, "Closing file...") = vbYes Then
                            xbk.Close (True)
                        Else:
                            xbk.Close (False)
                        End If
                    End If
                Next
            End If
            xl.Quit
            Set xl = Nothing
...
Рейтинг: 0 / 0
Закрыть повисшую задачу/открытый файл Excel
    #39785480
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
yoichi730, угу, так и сделал
...
Рейтинг: 0 / 0
Закрыть повисшую задачу/открытый файл Excel
    #39785515
ldfanate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в общем случае Excel.Quit совсем не гарантия закрытия приложения. Если там например модальное окно всплыло (каконить макрос OnClose отрабатывает в книге или в надстройке экселя например), или api-вызовы есть, - то на .Quit вы и зависните.

Поэтому надёжно только через API (с ожиданием завершения убивания процесса).
...
Рейтинг: 0 / 0
Закрыть повисшую задачу/открытый файл Excel
    #39787545
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сталкивался с таким случаем. Например, при записи данных в файл Excel. Писал по очереди в несколько файлов в цикле. Всё это выполнялось в подпрограмме. После закрытия подпрограммы Excel оставался висеть в памяти. При следующей попытке запустить подпрограмму начинали сыпаться ошибки обращения к ячейкам листа Excel. Лечилось полной перезагрузкой программы.
Вот здесь Можно ли из программы Access снять процесс?

И вот здесь Принудительное закрытие приложений одно из решений.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Закрыть повисшую задачу/открытый файл Excel
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]