Vba excel как закрыть excel Excelka.ru - все про Ексель

Vba excel как закрыть excel

Vba excel как закрыть excel

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

​Смотрите также​​ клавиатуре)​ для нажатия кнопки:​ просто скрывает формулу​ перехватывать события на​ сценарии. Она такая.​ с Книги3 в​
​Mishel915​ одном Макросе1) книги.​ ‘и закрываю окно​
​: Кнопочка с решёткой,​
​ As Excel.Application) app.ActiveWorkbook.Close​
​ как. По-видимому, работающий​
​:​
​ другое сообщение, хотя​
​ файл Эксель, да​

​ True)​​85Muslim85​
​Не хочу размещать​
​Private Sub CommandButton1_Click()​
​ от пользователя​ уровне Application.​ В коллекции Workbooks​
​ Книгу1, потом перейти​
​:​Если команда о​ редактора VBA​
​ однако​
​ 0 app.Quit End​
​ макрос не дает​
​Mary_Rustle​ ничего принципиального я​ так чтобы и​Workbooks.Close True​: добрый день, скажите​
​ кнопки на форме​
​ Unload Me Set​метод Unload (имя​Mishel915​ фиксируется определённый порядок​ в Книгу2, потом​
​EducatedFool !​
​ закрытии книг поступает​Возможно и Вам​Glen​ SubА в самой​ выполнить команду Quit.​, а какой смысл​
​ не поменяла:​ в скрытых процессах​’ закрыть без​ как закрыть ексель​
​ — так сделай​

​ UserForm1 = Nothing​​ формы) — выгружает​: Работает так :​ чередования открытых книг,​
​ перейти в Книгу1,​
​Спасибо за этюд.​
​ из Книги1, то​

VBA Access: как закрыть книгу Эксель без сохранения?

​ это поможет.​​: не получается код​
​ книге прописать​ Можно попробовать накидать​ открывать файл Excel​
​Помогите, пожалуйста, это​ его тоже не​ сохранения (без запроса​ (полностью выйти) с​ ее масенькой (все​ End Sub​ форму из памяти​Sub Макрос1() Dim​
​ который не меняется.​
​ после чего подать​Да, необходимо было​ закрывается только Книга1.​Glen​ прикрепить​Sub QE() Dim​ нажатий клавиш, типа​ и запускать макрос,​ очень большая проблема,​ было.​ подтверждения пользователя, даже​ сохранением под таким​ размеры и положение=1​flower2005​ и закрывает её​ wb As Workbook​ Код размещён в​ команду о закрытии​ подойти к ThisWorkbook​ Книга2 остаётся открытой.​:​Glen​ obj As Object​Код Sub closeE()​ если файл потом​ уже долго бьюсь​

​Я делаю следующее:​ если .DisplayAlerts =​ же названием и​ — прекрасно работает.Пусть​: А может быть,​CердЖиГ​

​ For Each wb​ Книге3, а запускается​ двух книг, то​ с другой стороны​Очевидно это происходит​

​ОлеггелО​​:​
​ Set obj =​ Set sh =​
​ закрывается без сохранения​ над ней, никаких​
​Private Sub Кнопка0_Click()​ True)​ без предупреждения​ в проекте существует​ стоит обработать событие​: Всем спасибо уже​ In Workbooks If​ с Книги1. Как​ закрывается только Книга1?​ !​ из-за того, что​,​Sub rr()​ CreateObject(‘Имя класса’) obj.ExcelQuit​ CreateObject(‘WScript.Shell’) sh.SendKeys (‘Sub вава()​ If KeyAscii =​

​ формы, а на​​ActiveWorkbook.Save​ Next Application.ActiveWorkbook.Close End​ закрывает, после чего​ с Книги3 в​
​ For Each wb​ чего выполнение Макроса1​
​ суток !​ VBProj.VBComponents(«Лист3»)​ займет несколько минут​
​ 9>. Да и​ другой файл, который​ старалась​
​ = CreateObject(«Excel.Application») With​ Application больше нет​Range(«A1») = 1​ 27 Then MsgBox​ другие клавиши не​
​End Sub​ Sub​ выполнение кода прекращается​ Книгу1, потом перейти​ In Workbooks If​
​ прекращается.​Две книги Excel​Set CodeMod =​Glen​ работает это только​ потом используется?​Изменила код следующим​ app .Workbooks.Open FullFilePath​

Закрыть окно редактора VBA макросом (Макросы/Sub)

​ открытых и не​​Workbooks.Application.DisplayAlerts = False​
​ ‘Была нажата ESC,​ реагировать.​Pavel55​СердЖиГ​
​ так как код​ в Книгу2, потом​ wb.Name <> ThisWorkbook.Name​Такой вопрос :​
​ (Книга1 и Книга2)​ VBComp.CodeModule​

​: Доброго дня.​​ с листа Excel,​
​Mary_Rustle​ образом:​
​ End With app.Run​

​ сохраненных книг,​​Excel.ActiveWorkbook.SaveAs («rl.xlsm»)​
​ прячем форму’ UserForm1.Hide​flower2005​: )) ну, всё​

​: Уважаемые форумчане!​​ запущен с Книги1.​ перейти в Книгу1,​

​ Then wb.Close Next​​ какой должен быть​ закрываются в одном​

​With CodeMod​​В работе макрос​ ​ а из среды​
​:​Private Sub Кнопка0_Click()​
​ «diap» app.Quit Set​’ иначе будет​
​Workbooks.Close​ Else ‘ничего не​
​: Кто тебя учил​
​ правильно) только вы​Напомните, плиззз, команды​
​ Все книги, которые​ потом перейти в​
​ End SubКнига3 должна​ код для закрытия​
​ макросе, например так​
​lLineNum = .CreateEventProc(«Change»,​
​ переносит модуль процедуры​

​ разработки не работает.​​Казанский​​ FullFilePath = «C:папка7​​ app = Nothing​ запрашивать подтверждения сохранения,​End Sub​ делаем End If​ ​ выгружать (unload) форму​ спрашивали о сохранении​ в VBA для​
​ стоят в очереди​ Книгу2, после чего​ оставаться для выбора​ ​ всех книг, записанных​ :​

​ «Worksheet»)​​ события на новый​​oldpasp​​, спасибо) Действительно глупость.​
​ свод реестров 2015_9.xlsm»​

Как в одном макросе закрыть все книги Excel?

​ DoCmd.SetWarnings False DoCmd.RunSQL​​ при .DisplayAlerts =​KSV​
​ End SubКстати, а​ в кнопке? Не​ формы, а сами​ сохранения и закрытия​ на закрытие после​
​ подать команду о​
​ нового действия.​ в Макросе1, не​Код:​lLineNum = lLineNum​ лист.​: Так как макрос​ Исправила на (oBook.Save).​ Dim app As​ «DELETE Свод_реестров.* FROM​ True)​
​: все правильно​ какие элементы есть​ руби сук, на​ сохраняете активную книгу​
​ userform.​
​ Книги1, теперь не​ закрытии двух книг,​Не всё пока​
​ зависимо от порядка​Sub Макрос1() On​ + 1​При этом почему​ расположен в какой-либо​
​Штурмaн​ Object Dim oBook​ Свод_реестров» DoCmd.TransferSpreadsheet acImport,​Application.Quit​200?’200px’:»+(this.scrollHeight+5)+’px’);»>’ подавляет предупреждения Excel​ на форме?​ котором сидишь! Напиши​
​ ) или нам​Спасибо!​ закроются из-за того,​ то закрываются обе​ получается.​ расположения книг в​ Error Resume Next​.InsertLines lLineNum, «call​ то само открывается​ книге, то выполнив​: Помогите чайнику.Надо закрыть​ As Object Set​ , «Свод_реестров», FullFilePath,​85Muslim85​

Читать еще:  Как в excel вставить документ word

​Workbooks.Application.DisplayAlerts = False​​Код может и​ в коде кнопки​ надо было догадаться​Pavel55​ что код уже​ книги!​1. Если перейти​

​ Макросе1. Очевидно в​​ Workbooks(«Книга1»).Close (SaveChanges) Workbooks(«Книга2»).Close​​ Izm(Target)»​​ окно редактора VBA.​
​ команду​ через VBA Excel​ app = CreateObject(«Excel.Application»)​ True, «Свод_реестров» CurrentDb.Execute​
​: все отлично)) спасибки. ​
​’ сохраняет книгу​ не сработать, если,​ me.hide — это​ ?)​: А что значит​ не выполняется.​Таким образом в​ с Книги3 в​ Макросе1 необходимо определить​
​ (SaveChanges) On Error​End With​
​ По типу Alt+F11.​Application.Quit получаем запрос​ ,без сохранения и​ Set oBook =​ «DROP TABLE [Свод_реестров_ОшибкиИмпорта]»​ вот чего я​
​ в файл С​ например, фокус на​ переведет тебя в​СердЖиГ​ сохранить? У формы​Код будет срабатывать​ 3-ем сценарии код​ Книгу1, после чего​
​ управляющую книгу, т.​ GoTo 0 End​VBProj.VBE.MainWindow.Visible = False​Подскажите как кодом​ на сохранение​ без​ app.workbooks.Open(FullFilePath) app.Run «diap»​ DoCmd.SetWarnings True MsgBox​ хотел)​ ДРУГИМ именем​ TextBox(e).Только ListBox​
​ команду в вызывающей​: Павел, сорри, уже​ нет такой функции​ всегда, если его​ почемуто не видит​ подать команду о​ е. книгу с​ SubМакрос1 находится в​End Sub​ его закрыть.​А если предварительно​
​выскакивания запросов на​ oBook.Close False app.Quit​ «Импорт успешно завешен»​Workbooks.Application.DisplayAlerts = False​

​Excel.ActiveWorkbook.SaveAs («rl.xlsm»)​​К этой процедуре​ процедуре после show​
​ вечер был :-)​А закрыть можно​ запускать с книги​ Книги2.​ закрытии Книги1, то​ которой поступила команда,​ Книге3. Проэкт состоит​ОлеггелО​Glen​ закрыть книгу без​ сохранеие​ Set app =​ End SubРаньше все​Excel.ActiveWorkbook.Save​’ сохраняет книгу​ надо обратиться с​ — сделай там,​Димит​ так​ в которой он​Mishel915​ закрывается!​ и закрыть её​ из трёх книг​:​: Вроде так помогает​ сохранения​palva​ Nothing DoCmd.SetWarnings False​
​ работало хорошо за​Application.Quit​ в файл С​ фактическим параметром KeyAscii​ что требуется, а​
​: Не получается закрыть​Sub Макрос1()​ размещён.​: Установил причину не​2. Если перейти​ последней.​ — Книга1, Книга2,​Glen​Set VBProj =​Application.ActiveWorkbook.Close 0 то​

​: Закрыть одну из​​ DoCmd.RunSQL «DELETE Свод_реестров.*​
​ исключением следующего: когда​Mary_Rustle​ ТЕМ ЖЕ именем​ — как это​ затем выгружай форму!​ форму при нажатии​’или так​Если код запускать​ срабатывания кода​

VBA сохранить&закрыть userform

​ с Книги3 в​​EducatedFool​

​ Книга3.​, здравствуйте. Я так​ ActiveWorkbook.VBProject​ работа макроса прекращается​

​ книг, если макрос​

​ FROM Свод_реестров» DoCmd.TransferSpreadsheet​​ уже после успешного​: Добрый день!​Excel.ActiveWorkbook.Save​

​ ESC!!​
​Unload UserForm1 ‘закрыть​
​ с других книг,​Sub test() Dim​ Книгу1, потом перейти​
​: Sub test() Dim​
​Если команда о​
​ делал (топорно конечно),​

​VBProj.VBE.MainWindow.Visible = False​ (книга то закрывается)​ находится в другой,​
​ acImport, , «Свод_реестров»,​ выполнения модуля я​Мои попытки найти​’ закрывает книгу​

​ Walkerу​​: Не хочу размещать​Помогите!!​
​ и выгрузить из​
​ то на его​
​ wb As Workbook​
​ в Книгу2, после​

​ wb As Workbook​​ закрытии книг поступает​ добавьте перед «End​Glen​Значит надо объединить​ можно так:​ FullFilePath, True, «Свод_реестров»​ пыталась открыть файл​ нужное не увенчались​

​Workbooks.Close​​Почему нельзя Unload​ кнопки на форме​

VBA Excel закрытие формы на листе

​flower2005​​ памяти форму​ работу будет влиять​ For Each wb​
​ чего подать команду​

​ For Each wb​​ из Книги2, например​ sub»​: Код не покажу.​ эти команды: можно​Код Application.DisplayAlerts =​
​ CurrentDb.Execute «DROP TABLE​ эксель, мне выдавалось​ успехом, помогите пожалуйста!​’ закрыть с​

​ в кнопке?​​ — как и​: Разместите на форме​’или так​
​ порядок размещения открытых​ In Workbooks If​ о закрытии двух​ In Workbooks If​ так :​

Закрыть файл Excel на VBA

Помогите мне, пожалуйста.
Мне нужно открыть определенный файл и, после его обработки, закрыть.

name = Application.GetOpenFilename
Workbooks.Open name

а как мне его закрыть?

14 ответов

[QUOTE]Originally posted by ziv

хм. а как ты его обрабатываешь? ты же когда к нему обращаешься как-то его обзываешь?
ну..тогда после обработки открой его. и потом то же самое только activeworkbook
это первое что в голову приходит. только как же ты с ним работаешь?
или введи переменную для определения имени файла и вместо книга1 напиши его имя.

м-даа 🙂 программу писал под фиксированное имя открываемого файла 🙁

а как открываемому файлу присвоить необходимое мне имя, например «Книга1»?

а как открываемому файлу присвоить необходимое мне имя, например «Книга1»?

хм. А как открывается книга? Можно сделать через диалоговое окно , чтобы юзер сам выбрал что открыть:
Application.Dialogs(xlDialogOpen).Show
bookName = ActiveWorkbook.Name

а вообще проще в аську стукнись если срочно.

хм. А как открывается книга? Можно сделать через диалоговое окно , чтобы юзер сам выбрал что открыть:
Application.Dialogs(xlDialogOpen).Show
bookName = ActiveWorkbook.Name

а вообще проще в аську стукнись если срочно.

я делал вот так:
name = Application.GetOpenFilename

[off] а по аське ты «Марина»? [/off]

Вот этот name уже содержит в себе полной путь к файлу — «C:aaa1.xls», если из этой строки выдернуть aaa1.xls(например через мою функцию FileWithoutDir, описание в конце), то его можно использовать при обращении к книге — Workbooks(«aaa1.xls»).Close

А можно и так, вариантов масса:

Читать еще:  Как в эксель перевести в ворд онлайн

Dim sWrb as String

name = Application.GetOpenFilename
Workbooks.Open name
sWrb = ActiveWorkbook.name
.
Workbooks(sWrb).Close

Dim wWrb As Workbook

name = Application.GetOpenFilename
Workbooks.Open name
Set wWrb = ActiveWorkbook
.
wWrb.Close

Public Function FileWithoutDir(path As String) As String
‘ Вырезает название файла из полного пути к файлу
Dim i%, pos%

On Error GoTo Err_

FileWithoutDir = «»
s = «»
If path <> «» Then

pos = InStr(1, path, «»)
s = path
If pos > 0 Then
Do
s = Right(s, Len(s) — pos)
pos = InStr(1, s, «»)
Loop Until pos = 0
End If
FileWithoutDir = s

ExitSub:
Exit Function

Err_:
MsgBox «Возникла ошибка! (в функ. FileWithoutDir)»
Resume ExitSub

Вот этот name уже содержит в себе полной путь к файлу — «C:aaa1.xls», если из этой строки выдернуть aaa1.xls(например через мою функцию FileWithoutDir, описание в конце), то его можно использовать при обращении к книге — Workbooks(«aaa1.xls»).Close

А можно и так, вариантов масса:

Dim sWrb as String

name = Application.GetOpenFilename
Workbooks.Open name
sWrb = ActiveWorkbook.name
.
Workbooks(sWrb).Close

Dim wWrb As Workbook

name = Application.GetOpenFilename
Workbooks.Open name
Set wWrb = ActiveWorkbook
.
wWrb.Close

Public Function FileWithoutDir(path As String) As String
‘ Вырезает название файла из полного пути к файлу
Dim i%, pos%

On Error GoTo Err_

FileWithoutDir = «»
s = «»
If path <> «» Then

pos = InStr(1, path, «»)
s = path
If pos > 0 Then
Do
s = Right(s, Len(s) — pos)
pos = InStr(1, s, «»)
Loop Until pos = 0
End If
FileWithoutDir = s

ExitSub:
Exit Function

Err_:
MsgBox «Возникла ошибка! (в функ. FileWithoutDir)»
Resume ExitSub

В твоем случае наверное лучше использоватть вместо InStr() функцию InStrRev(), чтобы сразу найти правый «» в полном имени файла.

Да, согласен, грехи молодости. 🙂

А я вот так действую в таких случаях:

Книги в Экселе нумеруются в порядке открытия. Поэтому сразу после открытия того файла Workbooks(Workbooks.Count) показывает на него. Можно запомнить в объектную переменную, а если никаких других книг не открывается в процессе обработки — так и запоминать ничего не нужно.

Originally posted by Cutty Sark
А я вот так действую в таких случаях:

Книги в Экселе нумеруются в порядке открытия. Поэтому сразу после открытия того файла Workbooks(Workbooks.Count) показывает на него. Можно запомнить в объектную переменную, а если никаких других книг не открывается в процессе обработки — так и запоминать ничего не нужно.

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

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

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

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

Закрыть все открытые книги Excel

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

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

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

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

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

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

  • 26569 просмотров

Комментарии

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

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 такой код (в модуль ЭтаКнига)

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

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

Здравствуйте.
Попытался вставить второй код в Книгу1 в процедуру открытия книги а затем открыть ее гиперссылкой в Книге2, Книга2 закрывается, но Книга1 открывается и сразу закрывается.
Походу открытие Книги1 через гиперссылку в другой книге не является корректным для данного кода, возможно ли это исправить?

Читать еще:  Как в эксель сделать календарь

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

можно ли получать не имена открытых книг, а имена открытых файлов 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, почитайте справку, доработайте код

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

Работа с внешним Excel файлом из VBA

Задача по объединению данных из нескольких Excel-файлов, или подгрузка доп.данных из внешнего файла решается достаточно просто: создается объект Excel, который можно скрыть визуально, затем открывается необходимый файл и выполняются нужные действия. Просто приведу несколько примеров.

Открытие файла Excel

В первой строке запускаем новый Excel, затем делаем его невидимым, в 3-й строке открываем файл fname. В последней строке получаем первый лист открытого excel-кого файла.

Альтернативный вариант открытия файла

При открытии файла можно использовать доп.параметры (приведу некоторые):

UpdateLinks — обновлять или нет внешние ссылки при открытии файла;
ReadOnly — открытие в режиме только для чтения;
Format — используемый при открытии разделитель (1 — символ tab, 2 — запятые, 3 — пробелы, 4 — точка с запятой, 5 — без разделителя, 6 — пользовательский разделитель, заданный в Delimiter);
Delimiter — пользовательский разделитель (в случае, если Format = 6);
Origin — тип операционной системы (xlMacintosh, xlWindows или xlMSDOS);
Local — использование в Excel языка такого же, как в открываемом файле.

Теперь можно выполнять какие-то действия с открытым файлом, просто обращаясь через wb и ws.

Записать книгу и закрыть

Для записи текущей книги (где находится макрос), можно использовать:

Чтобы сохранить или перезаписать книгу Excel без вопросов, можно применить такой вариант:

У метода SaveAs есть несколько параметров сохранения, с ними можно ознакомиться на сайте Microsoft.

Если нужно, можно закрыть книгу Excel без сохранения изменений таким образом:

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

Открытие книги Excel из кода VBA. Создание новой книги, присвоение ей имени. Обращение к открытой книге и закрытие. Методы Open, Add и Close объекта Workbooks.

Открытие существующей книги

Существующая книга открывается из кода 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:

Ссылка на основную публикацию