Закройте Excel, связанный с определенным именем файла

#excel #vba

Вопрос:

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

Я хочу закрыть Excel. Если я это сделаю

 Workbook.Close
 

…экземпляр Excel будет болтаться поблизости. Если я это сделаю

 Excel.Application.quit
 

…это может повлиять на другие экземпляры Excel, которые я открыл.
Учитывая, что я точно знаю, какой Excel я хочу закрыть, могу ли я закрыть книгу И связанный с ней экземпляр за один шаг, без большого количества тестов для других книг или экземпляров? ТИА

Комментарии:

1. Workbooks("name_of_workbook").Close ?

2. Вы можете создать новый экземпляр и назначить ему переменную, а затем сделать xlapp.quit это оттуда.

3. Где выполняется этот код? В том же экземпляре Excel, что и книга, или в другом экземпляре? Если другой, то как вы сначала получаете ссылку на рабочую книгу? Здесь не хватает большого контекста.

4. @CLR Вы бы так подумали, но это дает мне «Индекс вне диапазона».

5. @TimWilliams Код выполняется в Word и создает и заполняет электронную таблицу Excel на основе комментариев и изменений в данном документе Word.

Ответ №1:

Если у вас уже есть объект рабочей книги, вы можете получить доступ к приложению, в котором он запущен, с помощью Workbook.Application . .Parent Свойство также возвращает объект, членом которого является текущий объект, который для рабочих книг также является Application .

Таким образом, одно из следующих действий закроет конкретное приложение Excel, в котором запущена целевая книга:

 'Given that TargetWorkbook is a valid Workbook Object
TargetWorkbook.Application.Quit
TargetWorkbook.Parent.Quit