VBA Закрытие файлов Excel - PullRequest
3 голосов
/ 23 августа 2011

Скажем, у меня есть некоторый код VBA в Access, который использует Excel по любой причине. Иногда у меня возникают проблемы с правильным закрытием файла.

Код (я думаю) должен выглядеть примерно так:

WBO.Close savechanges:=True
Set WBO = Nothing

XLO.Application.Quit
Set XLO = Nothing

rs.Close
db.Close

Здесь XLO - это объект Excel, WBO - объект рабочей книги, rs - набор записей DAO, а db - база данных DAO. Несмотря на то, что физический файл Excel закрывается, в моей системе все еще происходит процесс «EXCEL.EXE», который не позволяет мне запускать программу два раза подряд. Кто-нибудь знает, почему это происходит?

EDIT

Я вынул строки rs.Close, а затем db.Close, поскольку решил вручную экспортировать данные, которые использовал, из Access в Excel (слишком много строк и столбцов для эффективного копирования каждой ячейки). Однако, это не изменило проблему под рукой.

Спасибо,

Джесси Смотермон

Ответы [ 3 ]

3 голосов
/ 23 августа 2011

Нет действительного Excel объекта. Application является объектом верхнего уровня, но этот объект Application имеет свойство Application, которое фактически указывает на «создателя указанного объекта». Так что попытка выйти из XLO.Application не будет делать то, что вы думаете.

Предполагая, что XLO имеет тип Excel.Application, попробуйте просто XLO.Quit вместо XLO.Application.Quit

0 голосов
/ 13 сентября 2013

Обратитесь к этому ответу.
Это сработало для меня.

Dim sKill As String

sKill = "TASKKILL /F /IM msaccess.exe"
Shell sKill, vbHide

Если это работает, пометьте ответ в ссылке ^, а не мой.

0 голосов
/ 08 мая 2012

Почему бы просто:

application.displayalerts = false
WBO.save (or saveas whatever it matters)
WBO.close 
set WBO = nothing 

Я не вижу проблемы с памятью ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...