Excel VBA 逆引き集 | 新規Excelブックを保存

Excel VBA
スポンサーリンク

新規Excelブックを保存

「新しいブックを作って保存する」処理は業務でよく使います。テンプレート作成、レポート出力、バックアップなどに必須。初心者向けに最短コードから安全なテンプレートまで整理しました。


基本:新規ブックを作成して保存

Sub SaveNewWorkbook_Basic()
    Dim wb As Workbook
    Set wb = Workbooks.Add          '新しいブックを作成
    wb.SaveAs Filename:="C:\Data\NewBook.xlsx"
    wb.Close SaveChanges:=True      '保存して閉じる
End Sub
VB
  • ポイント:
    • Workbooks.Add → 新しいブックを作成。
    • SaveAs → 保存場所とファイル名を指定。
    • Close SaveChanges:=True → 保存して閉じる。

保存形式を指定(拡張子ごとに)

Sub SaveNewWorkbook_Format()
    Dim wb As Workbook
    Set wb = Workbooks.Add
    'Excel標準形式(.xlsx)
    wb.SaveAs Filename:="C:\Data\Report.xlsx", FileFormat:=xlOpenXMLWorkbook
    'マクロ有効形式(.xlsm)
    'wb.SaveAs Filename:="C:\Data\Report.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
    wb.Close SaveChanges:=True
End Sub
VB
  • ポイント:
    • FileFormat を指定すると拡張子に合わせた形式で保存できる。
    • マクロを含むなら .xlsm を選ぶ。

相対パスで保存(配布用に便利)

Sub SaveNewWorkbook_Relative()
    Dim wb As Workbook, path As String
    Set wb = Workbooks.Add
    path = ThisWorkbook.Path & "\Output\Result.xlsx" 'このブックの場所基準
    wb.SaveAs Filename:=path
    wb.Close SaveChanges:=True
End Sub
VB
  • ポイント:
    • ThisWorkbook.Path → 実行中のブックのフォルダを基準にできる。
    • 配布先でも壊れにくい。

上書き確認を抑止(業務用テンプレ)

Sub SaveNewWorkbook_Safe()
    Dim wb As Workbook
    Set wb = Workbooks.Add

    Application.DisplayAlerts = False '上書き確認を抑止
    wb.SaveAs Filename:="C:\Data\Daily.xlsx", FileFormat:=xlOpenXMLWorkbook
    Application.DisplayAlerts = True

    wb.Close SaveChanges:=True
End Sub
VB
  • ポイント:
    • DisplayAlerts = False → 「既に存在します。上書きしますか?」を自動でYesに。
    • 終了時に必ず True に戻す。

例題で練習

例題1:新しいブックを作って「顧客リスト.xlsx」として保存

Sub Example_SaveCustomerList()
    Dim wb As Workbook
    Set wb = Workbooks.Add
    wb.Worksheets(1).Range("A1").Value = "顧客名"
    wb.Worksheets(1).Range("B1").Value = "電話番号"
    wb.SaveAs Filename:="C:\Data\顧客リスト.xlsx", FileFormat:=xlOpenXMLWorkbook
    wb.Close SaveChanges:=True
End Sub
VB

例題2:新規ブックに日付入りファイル名で保存

Sub Example_SaveWithDate()
    Dim wb As Workbook, fname As String
    Set wb = Workbooks.Add
    fname = "C:\Data\Report_" & Format(Date, "yyyymmdd") & ".xlsx"
    wb.SaveAs Filename:=fname, FileFormat:=xlOpenXMLWorkbook
    wb.Close SaveChanges:=True
End Sub
VB

例題3:新規ブックを相対パスで「Output」フォルダに保存

Sub Example_SaveRelative()
    Dim wb As Workbook, path As String
    Set wb = Workbooks.Add
    path = ThisWorkbook.Path & "\Output\Result_" & Format(Now, "yyyymmdd_hhmm") & ".xlsx"
    wb.SaveAs Filename:=path, FileFormat:=xlOpenXMLWorkbook
    wb.Close SaveChanges:=True
End Sub
VB

実務の落とし穴と対策

  • 保存形式の不一致: .xlsm にマクロを保存するなら FileFormat を必ず指定。
  • 上書き確認: DisplayAlerts を False にすると自動上書き。復帰忘れに注意。
  • パスの存在: 保存先フォルダが存在しないとエラー。事前に Dir で確認。
  • 閉じ忘れ: 新規ブックは参照を持ち、処理後は必ず Close
  • 相対パスの安定性: 配布用は ThisWorkbook.Path を基準に組み立てる。
タイトルとURLをコピーしました