サイトについて      連絡先   検索

VBA Workbook [ワークブック] を保存する

はじめに

Excel VBA の Workbook (ワークブック) を保存する方法を紹介します。

Workbook.Save メソッドで Workbook を上書き保存できます。

Workbook.SaveAs メソッドで Workbook を名前を付けて保存できます。

Workbook (ワークブック) を上書き保存する

Workbook を上書き保存するには Workbook.Save のように指定します。

Dim wb As Workbook
Set wb = ActiveWorkbook ' アクティブな Workbook を取得

' Workbook を編集
wb.Sheets(1).Range("A1").Value = "編集"

wb.Save ' 上書き保存

新規作成した Workbook の保存先は Workbook.Path から取得できます。

Dim wb As Workbook
Set wb = Workbooks.Add
Debug.Print(wb.Path) ' ドキュメントフォルダなど
wb.Save

Workbook (ワークブック) を名前を付けて保存する

Workbook を名前を付けて保存するには Workbook.SaveAs("フルパス") のように指定します。

Dim wb As Workbook
Set wb = ActiveWorkbook ' アクティブな Workbook を取得

' Workbook を編集
wb.Sheets(1).Range("A1").Value = "編集"

Call wb.SaveAs("C:\Book1.xlsx") ' 名前を付けて保存

保存先に既にファイルが存在するときは、上書きするかメッセージが表示されます。

1

[いいえ] か [キャンセル] をクリックするとエラーが発生します。他のエラー処理と混在しないようにメソッドを作成すると処理がわかりやすくなります。

Public Function SaveAsWorkbook(ByVal wb As Workbook, ByVal fullPath As String) As Boolean
On Error GoTo catch

    wb.SaveAs (fullPath)
    SaveAsWorkbook = True
    Exit Function
    
catch:
    SaveAsWorkbook = False
End Function

SaveAsWorkbook の戻り値が True なら保存、False ならキャンセル、のように処理を分けられます。

If SaveAsWorkbook(wb, "C:\Book1.xlsx") = False Then
    ' キャンセル
    Exit Sub
End If

' 保存

名前を付けて保存ダイアログを表示する

Application.GetSaveAsFilename メソッドで名前を付けて保存ダイアログを表示できます。

戻り値に指定したフルパスが返ります。キャンセルすると "False" が返ります。

2
Dim fileName As String
fileName = Application.GetSaveAsFilename ' ダイアログを表示

If fileName = "False" Then
    ' キャンセル
    Exif Sub
End If

' 保存
Call wb.SaveAs(fileName) ' 名前を付けて保存

関連ページ