#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