How to: Programmatically save workbooks

Applies to: yesVisual Studio noVisual Studio for Mac

Note

This article applies to Visual Studio 2017. If you're looking for the latest Visual Studio documentation, see Visual Studio documentation. We recommend upgrading to the latest version of Visual Studio. Download it here

There are several ways to save a workbook. You can save a workbook without changing the path. If the workbook has not been saved before, you should save the workbook by specifying a path. Without an explicit path, Microsoft Office Excel saves the file in the current folder with the name it was given when it was created. You can also save a copy of the workbook without modifying the open workbook in memory.

Applies to: The information in this topic applies to document-level projects and VSTO Add-in projects for Excel. For more information, see Features available by Office application and project type.

Save a workbook without changing the path

To save a workbook associated with a document-level customization

  1. Call the Save method of the ThisWorkbook class.

    this.Save();
    
    Me.Save()
    

To save the active workbook in a VSTO Add-in

  1. Call the Save method to save the active workbook. To use the following code example, run it in the ThisAddIn class in a VSTO Add-in project for Excel.

    this.Application.ActiveWorkbook.Save();
    
    Me.Application.ActiveWorkbook.Save()
    

Save a workbook with a new path

You can save the specified workbook to a new location or with a new name, optionally specifying a file format, a password, an access mode, and more.

Note

You might want to set the DisplayAlerts property to False before saving the workbook with a new path because saving in some formats requires interaction. Setting this property to False causes Excel to use all defaults.

To save a workbook associated with a document-level customization

  1. Call the SaveAs method of the ThisWorkbook class. To use the following code example, run it in the ThisWorkbook class.

    this.SaveAs(@"C:\Book1.xml", missing,
        missing, missing, missing, missing, Excel.XlSaveAsAccessMode.xlNoChange,
        missing, missing, missing, missing, missing);
    
    Me.SaveAs("C:\Book1.xml")
    

To save the active workbook in a VSTO Add-in

  1. Call the SaveAs method to save the active workbook to a new path. To use the following code example, run it in the ThisAddIn class in a VSTO Add-in project for Excel.

    this.Application.ActiveWorkbook.SaveAs(@"C:\Test\Book1.xml", 
        Excel.XlSaveAsAccessMode.xlNoChange);
    
    Me.Application.ActiveWorkbook.SaveAs("C:\Test\Book1.xml")
    

Save a copy of the workbook

You can save a copy of the workbook to a file without modifying the open workbook in memory. This is useful when you want to create a backup copy without modifying the location of the workbook.

To save a workbook associated with a document-level customization

  1. Call the SaveCopyAs method of the ThisWorkbook class. To use the following code example, run it in the ThisWorkbook class.

    this.SaveCopyAs(@"C:\Book1.xlsx");
    
    Me.SaveCopyAs("C:\Book1.xlsx")
    

To save the active workbook in a VSTO Add-in

  1. Call the SaveCopyAs method to save a copy of the active workbook. To use the following code example, run it in the ThisAddIn class in a VSTO Add-in project for Excel.

    this.Application.ActiveWorkbook.SaveCopyAs(@"C\Book1.xlsx");
    
    Me.Application.ActiveWorkbook.SaveCopyAs("C\Book1.xlsx")
    

Robust programming

Interactively canceling any of the methods that save or copy the workbook raises a run-time error in your code. For example, if your procedure calls the SaveAs method but does not disable prompts from Excel, and your user clicks Cancel when prompted, Excel raises a run-time error.

See also