Закройте файл Excel после создания SaveCopyAs на рабочем столе - PullRequest
0 голосов
/ 21 января 2020

У меня есть следующий VBA:

Sub Create_Sent_File()
ActiveWorkbook.SaveCopyAs "C:\Users\" & Environ("Username") & "\Desktop\" & "Sent_File" & ".xlsm"
ActiveWorkbook.Close SaveChanges:=False
End Sub

Код создает новый файл с именем "Sent_File" на рабочем столе пользователя.

Пока все работает нормально.


Однако после создания файла я хочу закрыть исходный файл Excel.
Точно так же, как если бы у меня открылись три файла Excel, а затем я закрыл один из них.
Поэтому я попытался go по следующей формуле:

ActiveWorkbook.Close SaveChanges:=False

Теперь проблема в том, что книга закрыта, но Excel почему-то остается открытым:

enter image description here

Что мне нужно изменить в мой код так:
а) Текущая рабочая книга, в которой я запускаю VBA, закрыта.
б) Другие книги в Excel остаются открытыми.
c) Excel не остается открытым, как видно на скриншоте.

1 Ответ

0 голосов
/ 21 января 2020

Вы почти у цели, но вам нужна ссылка на родительское приложение, прежде чем вы затем запустите его закрытие.

Sub Create_Sent_File()
    Dim xlParent As Excel.Application

    ActiveWorkbook.SaveCopyAs "C:\Users\" & Environ("Username") & "\Desktop\" & "Sent_File" & ".xlsm"
    ActiveWorkbook.Saved = False

    Set xlParent = ActiveWorkbook.Parent
    xlParent.Quit
End Sub

Установив флаг Saved для текущей книги на False, вы можете закрыть приложение Excel, не вызывая никаких окон подтверждения.

Если у вас открыты другие книги, которые вы также хотите закрыть без подтверждения, вам нужно будет работать с коллекцией Workbooks, установив Saved свойство каждого к False перед тем, как продолжить работу с приложением Excel.

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