新規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を基準に組み立てる。
