Step by Step Guide to Save and Close Workbooks
Index:
- Save and close all open workbooks including current one
- Save and close all open workbooks without closing the current one
- Save and close a specific workbook
- Save and close a current workbook Only
- Close a workbook without saving it
While closing an Excel workbook manually, you would have noticed this confirmation popup before it closes.
The user is asked to save the changes before closing it. When you try to close an excel workbook programmatically, then you need to provide this choice before closing it – Whether you want to save it before closing or discard the changes.
This is the statement that is used to close a Workbook. ThisWorkbook.Close savechanges:=True
The parameter savechanges:=True
or savechanges:=False
is set according to your preference.
Note: That ThisWorkbook
is current workbook object. That means after executing the above statement, the same workbook will be closed where the statement is executed.
Let’s take a look at a few examples.
How to save and close all open workbooks including current one
In this example, we are going to save and close all open workbooks including the current one, where this VBA code is running. Since you need to close the current workbook too, you need to make sure that the Save and Close
command is executed for the current workbook at last. You can see in the below code, that before closing any workbook from Workbooks
Object which is basically a collection of all Open Workbooks, I am checking the name of the workbook and if it is matching with the current workbook name, which is ThisWorkbook
Object. If it is not the same, then close it else move to the next Workbook. Once all the workbooks are closed except current one, you can close the current workbook.
Sub SaveClose() Dim Wb As Workbook For Each Wb In Workbooks If Wb.Name <> ThisWorkbook.Name Then Wb.Close savechanges:=True End If Next Wb ThisWorkbook.Close savechanges:=True End Sub
How to save and close all open workbooks without closing the current one
Sometimes you need to close all the workbook before you run your macro in an excel workbook. In such case, you can use following code to close all open workbooks except the current one where the code is running.
Sub SaveClose() Dim Wb As Workbook For Each Wb In Workbooks If Wb.Name <> ThisWorkbook.Name Then Wb.Close savechanges:=True End If Next Wb End Sub
How to save and close a specific workbook
.close
method can be executed on any Worbook object which can close the workbook.
Sub SaveClose() Workbooks("YourExcelWorkbook.xls").Close savechanges:=True End Sub
How to save and close a current workbook Only
As mentioned before, we can execute .close
method on Current Workbook, which is ThisWorkbook
Sub SaveClose() ThisWorkbook.Close savechanges:=True End Sub
How to close a workbook without saving it
It is simple, all you need to do is pass the savechanges:=True
parameter to False
.
Sub SaveClose() ThisWorkbook.Close savechanges:=False End Sub
0 Comments