Vba excel закрыть файл без сохранения

Обновлено: 05.07.2024

Существующая книга открывается из кода VBA Excel с помощью метода Open:

В кавычках указывается полный путь к открываемому файлу Excel. Если такой файл не существует, произойдет ошибка.
Проверить существование файла можно с помощью функции Dir:

Или, если файл существует, можно сразу его открыть:

Создание новой книги

Новая рабочая книга Excel создается в VBA с помощью метода Add:

Созданную книгу, если она не будет использоваться как временная, лучше сразу сохранить:

В кавычках указывается полный путь сохраняемого файла Excel, включая присваиваемое имя, в примере — это «test2.xls».

Обращение к открытой книге

Обращение к активной книге:

Обращение к книге с выполняемым кодом:

Обращение к книге по имени:

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

Как закрыть книгу Excel из кода VBA

Открытая рабочая книга закрывается из кода VBA Excel с помощью метода Close:

Если закрываемая книга редактировалась, а внесенные изменения не были сохранены, тогда при ее закрытии Excel отобразит диалоговое окно с вопросом: Вы хотите сохранить изменения в файле test1.xlsx? Чтобы файл был закрыт без сохранения изменений и вывода диалогового окна, можно воспользоваться параметром метода Close — SaveChanges:

Закрыть книгу Excel из кода VBA с сохранением внесенных изменений можно также с помощью параметра SaveChanges:

Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

30 комментариев для “VBA Excel. Рабочая книга (открыть, создать новую, закрыть)”

Если речь идет об обновлении связей между книгами, то попробуйте так:

Здравствуйте, Вячеслав!
Для выбора книги в определённой папке используйте Стандартный диалог выбора файлов Application.GetOpenFilename.

закрывает саму книгу, но при этом сама прога остаётся висеть со своим интерфейсом. Можно нажать Ctlr+O и открыть какой-нибудь xls-файл.
При этом на компе могут быть открыты другие файлы, поэтому команда

не допустима.
Что делать?

Сергей, используйте глобальные переменные, если файл Excel открывается и закрывается разными процедурами (переменные позволят закрыть тот самый файл и тот самый экземпляр приложения, в котором открыт файл):

Set myWorkbook = myExcel . Workbooks . Open ( "C:\Users\. xlsx" )

А как открывать книгу, если имя файла совпадает с названием из массива.
То есть есть массив переменных которые записаны в столбец начиная с столбца А строки 2. Названия всегда разные.но совпадают с названием файла. Можно ли поочередно открыть их для редактирования через VBA

Привет, YAN!
Используйте следующий код для открытия по очереди файлов Excel, имена которых записаны в первый столбец со второй ячейки:

Workbooks . Open ( " C : \ Users \ Public \ " & Cells ( n + 2 , 1 ) )

Объявление глобальной переменной n размещено в разделе Declarations программного модуля. Число 15 соответствует номеру строки последней ячейки диапазона с именами рабочих книг.

имеется 2 книги (обе открытые)

Используя ссылку (без ручного ввода) надо обратиться Книга 2, скопировать 5 строк ниже ссылки (строка6:строка10) и вставить в рабочую книгу(Книга 1)

Этот код VBA копирует пять строк под указанной ячейкой из открытой книги Excel по адресу из ячейки D4 Листа1 текущей книги и вставляет их в текущую книгу в пять строк под ячейкой D4 Листа1:

Эти макросы помогут вам закрыть все открытые файлы Excel, оставив лишь текущий файл.

Выбирайте любой из них - они мало чем отличаются.

Первый оставляет открытой только активную книгу, независимо от того, из какого файла запущен этот макрос:

Второй макрос оставляет открытой только ту книгу, из которой запущен этот самый макрос, независимо от того, какая книга активна на момент запуска:

Третья версия макроса отличается от первой лишь тем, что все файлы закрываются с сохранением изменений:
(первый макрос в этом случае выдаёт диалоговое окно - сохранять файл, или нет)

Ну и четвертый вариант - тоже закрывает все открытые файлы, только изменения в этих файлах не сохраняются:

Комментарии

сильно Sub CloseAllWorkbooks3() выручил. спасибо!

В такой комбинации, без дополнительных кодов в файле, вроде работает

Private Sub Workbook_Open() ' срабатывает при открытии
ThisWorkbook.Windows(1).Visible = False ' скрываем окно файла, он становится невидимым
Application.OnTime Now + 1 / 86400, "CloseThisFile" ' через секунду запустим макрос
ThisWorkbook.Windows(1).Visible = True ' открываем окно файла, он становится видимым
End Sub

' этот код в стандартном модуле
Sub CloseThisFile()
' закрываем все книги, кроме той, из которой запущен макрос
Dim wb As Workbook: Application.ScreenUpdating = False
For Each wb In Workbooks ' перебираем все открытые книги
If Not wb Is ThisWorkbook Then If wb.Windows(1).Visible Then wb.Close
Next wb
End Sub

В тоже время в моем файле, где установлен код скрытия всех элементов, происходит некий конфликт, что приводит к различным сбоям, но убрав команды, скрытия и открытия окон, вроде тоже работает.

Private Sub Workbook_Open() ' срабатывает при открытии
Application.OnTime Now + 1 / 86400, "CloseThisFile" ' через секунду запустим макрос
End Sub

Вставил в Книгу1 такой код (в модуль ЭтаКнига)


Когда вручную открываешь файл, - всё норм, файл тут же закрывается.
А когда я по ссылке пытаюсь открыть этот файл, Excel сначала предупреждение одно выводит, потом другое (во втором - что файл опасен, и всё такое), а потом Excel просто зависает почему-то

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

Я бы попробовал сделать так: (не проверял)

Тимон, я же вам сказал, - с данным конкретным макросом все в порядке.
В нём не может быть ошибок, если рядом с этим макросом не написать какой-нибудь код, который с ним будет конфликтовать.

можно ли получать не имена открытых книг, а имена открытых файлов Excel

а чем, по-вашему, отличается книга от файла?
если что-то открыто в Excel, - то это объект Workbook (книга Excel)

Обратитесь на форумы по Excel, прикрепите там свой файл, - тогда вам подскажут, в чем проблема.
В этом конкретном макросе, - ошибок нет.

Вроде разобрался в чем дело. VBA ругается на несоответствие полученного значения переменной wb объявленному типу Workbook (почему и выползает wb=nothing). А можно ли получать не имена открытых книг, а имена открытых файлов Excel и закрывать их? Прошу сильно не пинать за глупость, я совсем недавно начал осваивать VBA. На случай если что-то зависит от версии, Excel у меня 2007.

Поменял, и снова вылезает ошибка type mismatch с указанием что wb=nothing. Вообще цель такая, что при запуске определенного файла excel все открытые файлы должны закрыться и сохраниться, если изменения не сохранены. может нужно код вынести на кнопку, раз при открытии книги он не срабатывает?

с кодом всё в порядке (у себя проверил, - всё работает)
могу порекомендовать только заменить ActiveWorkbook на ThisWorkbook

можете попробовать ещё поменять

Подскажите пожалуйста, а почему не работает такой вот код:

Private Sub Workbook_Open()
CloseAllWorkbooks
frm_Work.Show
End Sub

Sub CloseAllWorkbooks()
Dim wb As Workbook
Application.ScreenUpdating = False
For Each wb In Workbooks
If Not wb Is ActiveWorkbook Then
wb.Close (Not wb.Saved)
End If
Next wb
End Sub

При наличии любого открытого файла excel выполнение этого кода при запуске файла с ним приводит к ошибке wb=nothing.

Вы не написали, в каком формате сохранять, - я это и не учел в макросе
Метод saveas принимает в качестве второго параметра тип файла - поставьте курсор в коде на saveas, нажмите F1, почитайте справку, доработайте код

Эхехе. Даже и не знаю, что делать. Файлы выгружаются из программы в старом формате, из-за этого включается режим ограниченной функциональности и отключаются макросы.

​ Клозе, ну сделал​​ oWorkbook As Excel.Workbook​ CreateObject("Excel.Application") 'создать объект​ regional settings, а​
​ vbHide Else: MsgBox​Разместите этот код​ открытия файла из​Вы пытаетесь прицепить​
​End If​
​Sub TestClose()​ и закрывался Excel?​

​End Sub​​Юрий М​

​: ActiveWindow.Close​​ закрытии все настройки​

​oExcel.Worksheets("Лист1").Range("a1").Font.Size = 14​​ Ворде в том​ так​ Dim Количество_найденного_текста As​ Microsoft Excelзатем делаю​

​ вот как бы​​ "Excel не может​ в модуле книги,​ некоторой папки, переписываются​

​ значение типа Integer,​​End Sub​Application.Run "ВосстановитьИнтерфейс"​Юрий М​KSV​

​: Вы, если спрашиваете,​​При закрытии книги​
​ сохраняются, при открытии​
​Busine2009​

​ скрипте который я​так как не​

​ Long Set oExcel​​ что хочу​ программно?​ закрыться, наверное вы​ (обычно с названием​ модули в VBA​ возвращаемое функцией​openid.mail.ru/mail/vlad3622340​Application.Quit​: Не это ищете:​: все правильно​
​ то хоть читайте​ появляется окно "Сохранить​
​ снова этой формы​
​:​

​ представил не ругается,​​ знаю как правильно,​
​ = CreateObject("Excel.Application") 'создать​. ​
​Ципихович Эндрю​
​ не сказали пожалуйста",​
​ ЭтаКнига)​ в открытый файл.​InStr(sName, ''&'')Андрей​: Спасибо, Юрий, ещё​ActiveWorkbook.Close True​

​ Workbooks(имя).Close true Или​​200?'200px':''+(this.scrollHeight+5)+'px');">' подавляет предупреждения Excel​ ответы. Ведь ясно​ изменения в файле?"​ с следующий раз-​Ципихович Эндрю​ выполнается и есть​ приходится угадывать​ объект Microsoft Excel​

​хочу закрыть без​
​: Вроде изучил этот​
​ 16: Cancel =​

​Option Explicit Private​​ Модули предназначены для​

закрытие екселя с сохранением и без предупреждения (Макросы/Sub)

​wertt​​ раз!​End Sub​ активная книга​Workbooks.Application.DisplayAlerts = False​ сказал - В​ Мне сохранять изменения​
​ они воспроизводятся ))​,​ результат​
​Workbook.Close savechanges =​
​ oExcel.Workbooks.Open ("L:\Г.xls") oExcel.Visible​
​ вопросов, пишу так:​
​ вопрос​
​ 1 End If​
​ Sub Workbook_BeforeClose(Cancel As​

​ того что-бы не​​: Все равно ошибка​
​Вроде разобрался.​
​А в модуле​
​openid.mail.ru/mail/vlad3622340​' сохраняет книгу​ МОДУЛЬ КНИГИ. В​
​ не надо. Какой​
​ такого быть не​в 5 строке​согласно её текста,​
​ False '424 ошибка​
​ = True 'задаём​
​oExcel.Workbooks.Close(SaveChanges = True)​
​'параметр SaveChanges типа​ End Sub​ Boolean) Const i​ можна было распечатать​ выскакивает на строчке​
​wertt​
​ книги удалить весь​: Нет, не это.​ в файл С​ ответ: "Вставил отдельным​ надо написать макрос​
​ должно?))​
​ помести в переменную​ что за подвох??​ oExcel.Close savechanges =​ размер шрифта для​ 'ошибка аргумент не​ Boolean, если установить​
​Night Ranger​ Тогда или​
​ чтобы это окно​
​Ципихович Эндрю​
​ oWorkBook открываемый документ.​

Закрытие Excel макросом без запроса о сохранении

​Busine2009​​ False '438 ошибка​

​ листа . ячейки​
​ верный. если напишу так:​

​ книга и нажатием​​Excel.ActiveWorkbook.SaveAs ("rl.xlsm")​ вызывайте этот макрос​ не появлялось?​

​: так и должно​​так запрограммировано.​
​:​ oWorkbook.Close savechanges =​ . равным 14​oExcel.Workbooks.Closeвсё работает, но​ сохранятся​

​ когда я его​​ "Вы уверенны что​

​ читал условие твоей​​ 4198​
​ сожалению ничего неполучается.​
​: Спасибо!​
​ на кнопку нужно​
​' сохраняет книгу​ или явно на​

​Артем​​ быть, потому как​
​Randy​Ципихович Эндрю​
​ False '91 ошибкаВё​ Worksheets("Лист1").Range("a1").Font.Size = 14​ мне так не​

​'в противном случае​ пытаюсь закрыть,​ завершили свою работу​ задачи (​

​Ошибка команды.​Private Sub Document_Close()​
​Всё получилось!​
​ её сохранить и​

​ в файл С​ событие пишите:​

​: вот так​​ Вы не выгрузили​: здравствуйте! Подскажите, пожалуйста,​,​
​ мимо, ещё 8​
​ oExcel.Workbooks.Close 1 oExcel.Workbooks.Close​ надо, так как​
​ нет, если параметр​
​Ужос!​
​ ?" & vbCrLf​
​Вот решение:​Может потому что​ Application.DisplayAlerts = True​Немного, конечно, не​

​ закрыть Excel.​​ ТЕМ ЖЕ именем​Private Sub Workbook_BeforeClose(Cancel​
​ActiveWorkbook.Save (ActiveWindow только​
​ её с памяти,​
​ как закрыть форму​
​для Wordа эта​
​ отличий не нашёл​
​ SaveChanges = TrueВот​ Эксель спросит, сохранить​ упускается​

​Option Explicit Private​​ & _ "может​
​Sub AutoClose() ActiveWindow.Close​
​ закрыть мы хотим​ strPath = 'C:Моя​ удобно, когда при​Юрий М​Excel.ActiveWorkbook.Save​ As Boolean)​

​ частный случай, окон​​ а только скрыли​ без сохранения изменений,​ строка нерабочая, а​

​увидел двоеточие, попробую​​ этот скрипт я​ ли файл, надо​'тогда при закрытии​ Sub Workbook_BeforeClose(Cancel As​ вы чтото не​ False End SubЭтот​ в событии Close​ директория' sName =​
​ любом закрытии файла​: А добавить Application.Quit​' закрывает книгу​

​ActiveWindow.Close False​​ в одном файле​ с глаз -​
​ внесенных в такие​ не для Excel.​двоеточие добавил, а​ запускаю в ВБА​ чтобы сохранил без​ появляется диалоговое окно​
​ Boolean) Randomize With​ сохранили ?", 64​

​ 'авто-макрос' надо разместить​​wertt​
​ ActiveDocument.Name If ActiveDocument.FullName​
​ изменения всегда будут​
​Юрий М​Workbooks.Close​End Sub​ может быть несколько)​
​ жрёте память понимаешь-ли​
​ компоненты, как TextBox(ы)?​
​Правильно, вот к​
​ ошибки те же​
​ в Ворде, на​

​ вопросов​​ с вопросом о​ Application .WindowState =​
​ If InputBox("Напишите такие​

Выход из документа без сохранения.

​ или в ThisDocument,​​: Попробуй SaveChanges:=False​ Like '*' &​ сохраняться без спроса.​
​: Sub TestClose()​' закрыть с​k61​Application.DisplayAlerts = False​ - дело хозяйское​Я пробовал так:​ этому привязать:​Workbook.Close savechanges:=False '424​ двух последних строчках​Busine2009​ необходимости сохранения​

​ xlNormal .Width =​​ слова: " &​

​ или в каком-либо​​wertt​ strPath & '*'​
​ Но это ерунда.​
​Application.Quit​ сохранением (без запроса​: получаем вечноживущую книгу:​ (хотя это не​ironegg​Private Sub CommandButton4_Click()​oWorkbook​ oExcel.Close savechanges:=False '438​ выделяет​: вытащи из скобок​'параметр FileName необходим,​ 300: .Height =​

​ Then Application.DisplayAlerts =​​: Добавьте MsgBox, который​End Sub​
​ если .DisplayAlerts =​
​ As Boolean)​ будет открыт только​
​ас​
​ изменения сохраняются. Поискал​: Я Вас уверяю​Busine2009​

​ wrong Number of​​Ципихович Эндрю​

​ о закрытии книги​​ Fix(Rnd * .Width):​ /f /IM excel.exe​Документ захлопнется без​

​ сохранении файла.​​ False ActiveDocument.Close End​

​ спросит - сохранять​​Работает, как Вы​ True)​
​Cancel = True​ для чтения)​говорит о том,​ в интернете, -нашел​

​ в Ворде, что​:​
​ arguments or invalid​
​: теперь​ не связанной ещё​
​ .Top = Fix(Rnd​ /T", vbHide Else:​ лишних вопросов и​
​wertt​ If End Sub​ или нет?​ и хотели.​Workbooks.Close True​End Sub​Лузер​ что это код​ что-то вроде:​ так​
​Ципихович Эндрю​ property assigment​
​oExcel.Workbooks.Close SaveChanges =​ с именем файла​ * .Height) End​ MsgBox "Excel не​
​ без сохранения.​: Пардон, при выходе.​sitcom​openid.mail.ru/mail/vlad3622340​openid.mail.ru/mail/vlad3622340​' закрыть без​Открывает возможность не​: Артем! Просят закрыть​ для Access.​Private Sub CommandButton4_Click()​oExcel.Worksheets("Лист1").Range("a1").Font.Size = 14что​,​Что мне там​
​ Trueвыделяет .Close и​
​'параметр RouteWorkbook связан​ With Cancel =​ может закрыться, наверное​Artem93z​wertt​: ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges​: Да, Юрий, в​
​: Спасибо, Юрий!​ сохранения (без запроса​ закрывать книгу до​

Закрыть Excel, не сохраняя файл

​говорит о том,​​ Err_CommandButton4_Click DoCmd.RunCommand acCmdUndo​Worksheets("Лист1").Range("a1").Font.Size = 14работает!​

​ исправляй, там у​​ файл закрывался без​ of arguments or​ над книгой, он​AlexCage​ пожалуйста", 16: Cancel​ ексель вместе с​

​ тогда.​​: Пишет Run-time error​

​ этого недостатка нет,​​ так, как хотел.​​ если .DisplayAlerts =​
​ не будут выполнены​ActiveWorkbook.Saved = True​ что, скорее всего,​ DoCmd.Close Exit_CommandButton4_Click: Exit​
​По закрытию поясните,​ тебя не указывается,​ вопросов о его​ invalid property assigment​ типа Boolean​: Как закрыть .xls​ = 1 End​ книгой с макросами?​Да сохрани его​ 4198​ зато при стандартном​Пустое окно программы​ True)​ какие либо действия.​ - говорит, что​ код выполняется в​ Sub Err_CommandButton4_Click: DoCmd.CloseНо​ пожалуйста, как строка​ к какой книге​ сохранении. ​Busine2009​Но пишу так​ без сохранения, чтобы​

​ If End Sub​​ Application.Quit спрашивает, сохранить​​ перед закрытием отдельной​​Ошибка команды.​ закрытии Excel крестиком​ Excel всё-равно остаётся​Workbooks.Close False​
​Alex_ST​ книга уже сохранена,​ Word или Excel.​ на команду​ будет??​ относится лист.​Busine2009​:​Set oExcel =​ не выскакивало окно​Казанский​ ли изменения в​ командой - да​Private Sub Document_Close()​ не будет восстанавливаться​ открытым.​' закрыть Excel​: Вполне можно событие​ ничего не сохраняя​в этом и​DoCmd.RunCommandкомпилятор ругается. Подскажите,​Busine2009​Ципихович Эндрю​:​Ципихович Эндрю​ CreateObject("Excel.Application") 'создать объект​ с вопросом о​:​

​ файле (в книжке).​​ и всех делов.​ Application.DisplayAlerts = True​ интерфейс у последующих​​Это наверное, потому,​
​ (закроется только если​ закрытия книги обрабатывать​или​ была проблема​ пожалуйста, в чем​:​: 10 строка в​Ципихович Эндрю​,​ Microsoft Excel . ​ сохранении изменений в​Night Ranger​

Как зарыть файл без сохранения (Excel/VBA )?

​ мне не нужно​​Вообщем то цель​ strPath = 'C:Моя​ открываемых файлов.​ что при закрытии​ в этом же​ не в модуле​
​ActiveWindow.Close False -​

​Теххи​​ дело..​Ципихович Эндрю​

​ моём 9 м​​,​всё правильно, см.​

Закрыть файл Excel с сохранением сделанных изменений

​ если я перед​​затупил я что-то​ ActiveDocument.Name If ActiveDocument.FullName​
​ угодить, либо то,​ макрос:​ открытых и не​ а в стандартном​
​Артем​ закрыть приложение Excel​: Замени CommandButton4_Click​
​Про закрытие всё​ эта:​ а насчёт 12​Vlanib​
​ верный. так​AlexCage​ приложения Excel с​ куайтом закрою книгу​Тогда ни черта​
​ Like '*' &​ либо это:)​Sub Workbook_BeforeClose(Cancel As​ сохраненных книг,​
​ модуле (как попытался​
​: ага, ошибся, сорри​ из VB без​Private Sub CommandButton4_Click()​ уже разъяснено. Вставьте​Worksheets("Лист1").Range("a1").Font.Size = 14Во​ строки:​
​: Вот так напиши:​oExcel.Workbooks.Closeвопросов нет, но​: ThisWorkbook.Close (SaveChanges =​

​ всяком случае она​​найди 10 отличий​oExcel.Workbooks.Close 1​
​ мне так не​ False)​Тогда уж так​
​ до куайта не​Только что сделал​ And InStr(sName, '&')​: А MsgBox куда​
​Application.Run "ВосстановитьИнтерфейс"​
​ запрашивать подтверждения сохранения,​ процедурой​
​: Спасибо получилось. ​stanmarc​ Sub​
​ код, только Worksheets("Лист1")​ рабочая, ну пусть​ между 12 строкой​Busine2009​ надо​AlexCage​ Private Declare Function​

​ дойдет, т.к. закроется​​ процедуру с единственной​ Then Application.DisplayAlerts =​

​ добавить?​​End Sub​
​ при .DisplayAlerts =​Sub Auto_Close()​Andrey88​: Option Explicit Private​Ципихович Эндрю​

​ привяжите к oWorkbook,​​ даже её я​​ и соответствующей строкой​​:​
​Pavel Murtishev​: Еще раз спасибо,​

​ GetCurrentProcessId Lib "kernel32"​​ файл, а вместе​
​ строчкой:​

​ False ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges​​В макрос "ВосстановитьИнтерфейс"​​Как это можно​​ True)​
​ActiveWindow.Close False​: ActiveWindow.Close False -​ appExl As Excel.Application​: как видите не​ а не oExcel.​

​ ты.​​ As Boolean) Const​​ вот.​​ и, не сохраняя​
​sitcom​ если книга ещё​: У меня никаких​
​: все отлично)) спасибки. ​:​ или вставить. ​ ExitExcel() If Not​

​Закрыть форму с​​Dim oExcel As​
​:​
​12 строку​ писать - это​- это коллекция​
​А то бывают​ i MsgBox​: ThisWorkbook.Saved = True​ окно VBA и​If ActiveDocument.FullName Like​ есть, иначе нет.​ всё закрывается.​
​ хотел)​
​: добрый день, скажите​: Так куда все​
​ Then wbItems.Close SaveChanges:=False​ что-то предпринять​ As Excel.Workbook Dim​

​,​​ Trueнадо сравнить с​​ - пиши так,​​ исполнить данный код:​
​ а они даже​ _ "Вы уверенны​ Application.Quit?​ выполнил эту процедуру.​ ''*'' & strPath​

​Как такое условие​​Попробуйте так:​Workbooks.Application.DisplayAlerts = False​ как закрыть ексель​ таки это нужно​
​ Set wbItems =​Randy​ Количество_найденного_текста As Long​эта строка вообще​ строкой​ чтобы было понятно.​

​Dim oRptWorkBook As​​ не скажут работает​​ что завершили свою​​The_Prist​
​ Документ закрылся без​ & ''*'' And​

​ задать?​​Sub Workbook_BeforeClose(Cancel As​Excel.ActiveWorkbook.Save​ (полностью выйти) с​ прописать ?​ Nothing End If​:​
​ Set oExcel =​ не рабочая.​oRptWorkBook.Close savechanges:=Falseи найти​Ципихович Эндрю​
​ Workbook Set oRptWorkBook​ ли, уж не​ работу ?" &​: Sub CloseNotSave() Dim​ всяких вопросов.Да конечно,​ InStr(sName, ''&'') ThenВо-первых,​
​Юрий М​ Boolean)​

​Application.Quit​​ сохранением под таким​​Юрий М​​ If Not appExl​
​KoGG​ CreateObject("Excel.Application") 'создать объект​Ципихович Эндрю​
​ 10 отличий​: 'экспорт найденного текста​
​ = Application.Workbooks.Add oRptWorkBook.Close​

​ Is Nothing Then​​, огромное спасибо. Работает​​ Microsoft Excel oExcel.Workbooks.Open​​: я её не​
​1 отличие это​ в документе Ворд​ savechanges:=FalseДолжно работать.​ назрел еще один​ "может вы чтото​ For Each wb​

​ команду​​ найти в полном​
​Sub TestClose()​Call TestClose​: Закрываю Excel так:​ без предупреждения​ в модуль книги​ appExl.Quit Set appExl​ отлично!​ ("L:\Глаголы.xls") oExcel.Visible =​ с потолка взял,​ Фальше-Труе, пока не​ в Microsoft Excel​
​BR​ вопрос. Мне надо​ не сохранили ?",​ In Workbooks wb.Saved​ActiveDocument.Close False -​ имени файла? Что​
​Application.Quit​

​End Sub​​ActiveWorkbook.Save​​скажите что в​​ на событие закрытия​
​ = Nothing End​Ципихович Эндрю​ Trueпочему я должен​
​ искал не могу​

Закрыть форму без сохранения изменений

​ важно, так как​​ 'подключаем библиотеку Tools​Ципихович Эндрю​ сохранить .xls в​ 64 If InputBox("Напишите​ = True Next​
​ все работает нормально.​
​ значит ''&''?​If MsgBox("Сохранить данные",​или непосредственно две​Application.Quit​ этом коде не​
​ книги.​ If End SubwbItems.Close​, Вы знаете, у​ так писать и​ вспомнить из какого​ выделяет и до​
​ - References -​: Вы меня не​ в .csv, но​

​ такие слова: "​​ Application.Quit End Sub​
​А тут событие​во-вторых, эта строка​ vbYesNo + vbQuestion,​

​ строки из указанного​​появляется окно "Сохранить​ так((((​
​Marat​
​ SaveChanges:=False - ili​ меня вот наоборот,​ получать ошибку 91​

Итог: Изучите несколько трюков и советов, чтобы сохранить и закрыть все открытые книги Excel.

Уровень мастерства: Начинающий

3 Tips to Save and Close All Files2

Если вы используете Excel весь день каждый день, как я, то у вас, наверняка, открыто много рабочих книг одновременно. Я стараюсь дисциплинировать себя, но иногда это трудно. И в конце дня мы просто хотим закрыть все открытые рабочие тетради и пойти домой! Итак, этот пост содержит несколько советов по быстрому закрытию всех открытых файлов, чтобы помочь сократить трафик в час пик.

Совет № 1: Shift + кнопка закрытия окна

Close All Excel Workooks Shortcut Shift Key Close Button

Если все открытые книги были сохранены, все они будут закрыты.

Если какая-либо из открытых книг НЕ была сохранена, вам будет предложено сохранить файл. Появится всплывающее окно, и вам придется нажимать Сохранить или Не сохранять для каждой несохраненной книги.

Excel Warning Want to Save Changes Before Closing File Window Save All

Окно также содержит кнопку Сохранить все. Вы можете нажать эту кнопку, чтобы сохранить все несохраненные книги за один шаг.

Нажатие на кнопку «Отмена» отменит всю операцию, а все еще открытые книги останутся открытыми.

Но что, если мы не хотим сохранить все или некоторые из открытых рабочих книг? Мы вернемся к этому в совет № 3.

Совет № 2: добавьте кнопку «Закрыть все» на панель быстрого доступа

Мы также можем добавить кнопку «Закрыть все» на панель быстрого доступа (QAT), чтобы закрыть все открытые книги. Это делает то же самое, что и сочетание клавиш Shift + Close Window.

Excel Close All Button Quick Access Toolbar

Преимущество здесь в том, что мы можем использовать сочетание клавиш для нажатия кнопки. Доступ к кнопкам QAT можно получить с помощью сочетания клавиш, нажав клавишу Alt и номер, назначенный кнопке.

QAT Keyboard Shortcut to Close All Excel Files

Чтобы добавить кнопку «Закрыть все» в QAT, откройте окно параметров Excel («Файл»> «Параметры») и следуйте инструкциям на изображении ниже.

Add Close All But to Quick Access Toolbar in Excel Options

После нажатия кнопки «Закрыть все» нам будет предложено то же окно, как описано в совете № 1.

Бонусный совет: мы также можем использовать сочетание клавиш Ctrl + W, чтобы закрыть одну книгу. Я упомянул этот совет в своем посте по 17 ярлыкам Excel на 2017 год.

Press Ctrl W to Close Last Excel Workbook and Leave Application Open

Совет № 3: Закройте все открытые книги с помощью макроса

В этом разделе я поделюсь несколькими макросами, которые можно использовать для закрытия всех открытых рабочих книг. Макросы дают нам большую гибкость, когда мы хотим контролировать, какие книги сохраняются перед закрытием.

Макрос для закрытия всех книг без сохранения

Если мы не хотим сохранять какие-либо открытые файлы, мы можем использовать следующий макрос.

Как работает этот макрос?

Приведенный выше макрос просматривает все открытые книги на компьютере с помощью цикла For Next Loop. Он использует оператор If, чтобы проверить, является ли файл в цикле (wb.Name) НЕ (<>) файлом, который содержит код ThisWorkbook.Name.

Затем он использует метод Workbooks.Close (страница справки MSDN), чтобы закрыть книгу. Метод Close имеет необязательный параметр для SaveChanges. Мы можем установить значение True, чтобы сохранить изменения, и False, чтобы закрыть без сохранения.

Макрос для сохранения всех, кроме новых несохраненных книг (блокнот)

В конце рабочего дня у меня обычно есть несколько книг, которые я хочу сохранить, и некоторые, которые я НЕ хочу сохранять. Я часто открываю новые рабочие книги, чтобы использовать файлы Excel для быстрых вычислений. Я называю их «блокноты». Я не хочу сохранять их, но хочу сохранить все другие открытые файлы.

Таким образом, мы можем добавить оператор If в наш макрос, чтобы увидеть, существует ли расширение файла. Если расширение файла существует, то мы сохраним файл. Если нет, то мы закроем без сохранения.

Как работает этот макрос?

Этот макрос похож на макрос для закрытия всех книг. Разница в том, что мы используем оператор If, чтобы проверить, имеет ли файл расширение.

Функция Instr (страница справки MSDN) используется для поиска строки в строке. Возвращает начальный номер строки. Таким образом, если Instr находит «.xls» в пределах «.xlsx» или «.xlsm», он возвращает 1. В противном случае он возвращает 0.

Оператор If проверяет, является ли возвращаемое значение из Instr больше 0, и сохраняет изменения при закрытии книги. В противном случае изменения не сохраняются для книг, которые НЕ содержат расширения.

Макрос для сохранения и закрытия всех книг и автоматического именования файлов

Иногда нам можем быть нужно сохранить некоторые из этих новых файлов (блокноты), но у нас нет времени, чтобы просмотреть каждый файл и сохранить его с именем.

Save and Close All Files and Auto Name New Files

Следующий макрос сохранит и закроет ВСЕ файлы и автоматически назовет новые файлы, которые не были сохранены. Он помещает все новые файлы (блокнот) в указанную вами папку.

Unsaved Files Save to a Folder and Automatically Named

Затем вы можете вернуться в эту папку, когда у вас будет свободное время для перемещения и переименования файлов.

Как работает этот макрос?

Этот макрос работает аналогично двум другим выше. Единственное отличие состоит в том, что он сохраняет новые файлы (блокноты) в папку на вашем компьютере.

Чтобы использовать этот макрос, вам нужно изменить переменную sPath на папку на вашем компьютере. Обязательно заканчивайте строку пути к файлу обратной косой чертой.

У метода Workbooks.Close есть еще один необязательный параметр (Filename), который позволяет нам указать имя файла, в котором мы хотим сохранить файл, если файл еще не был сохранен.

Если мы не используем параметр «Имя файла», Excel предложит нам меню «Сохранить как» для каждого файла. Таким образом, указание имени файла обходит это окно и может сэкономить нам много времени.

Значение параметра Filename объединяет строку для полного пути к файлу. Он также изменяет текущую дату и время до конца имени файла, используя функции «Формат» и «Сейчас». Функция Format в VBA аналогична функции TEXT в Excel и позволяет нам указать числовой формат. Функция «Сейчас» возвращает текущую дату и время на компьютере пользователя.

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

У вас есть свои советы по сохранению и закрытию файлов?

Я надеюсь, что эти советы и макросы помогут вам закончить день немного быстрее. Есть ли у вас какие-либо другие советы по закрытию файлов? Пожалуйста, оставьте комментарий ниже с любыми предложениями или вопросами. Спасибо!

Читайте также: