はじめに
VBAで作業をしていると、
「処理結果を保存したい」
「別名で保存してバックアップを作りたい」
「ユーザーに保存先を選んでもらいたい」
そんな場面がよくあります。
ここでは、ファイルを保存する基本の使い方と、
実務で安心して使える書き方を解説します。
まずはコードを確認(もっともシンプル)
ActiveWorkbook.Save
開いているブックをそのまま上書き保存します。
ファイルを別名で保存する(SaveAs)
ActiveWorkbook.SaveAs "C:\Data\result.xlsx"
別名保存の基本です。
保存形式を指定する
ActiveWorkbook.SaveAs _
Filename:="C:\Data\result.xlsx", _
FileFormat:=xlOpenXMLWorkbook
よく使う形式:
| 形式 | FileFormat |
|---|---|
| xlsx | xlOpenXMLWorkbook |
| xlsm | xlOpenXMLWorkbookMacroEnabled |
| csv | xlCSV |
具体的な例で理解する
日付付きのファイル名で保存する
Dim path As String
path = "C:\Data\result_" & Format(Date, "yyyymmdd") & ".xlsx"
ActiveWorkbook.SaveAs path
日次処理でよく使うパターンです。
保存先フォルダがなければ作成してから保存する
Dim folder As String
folder = "C:\Export"
If Dir(folder, vbDirectory) = "" Then
MkDir folder
End If
ActiveWorkbook.SaveAs folder & "\output.xlsx"
実務で安心して使える“安全保存”の書き方です。
ユーザーに保存先を選んでもらう
Dim fd As FileDialog
Dim path As String
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
If fd.Show = -1 Then
path = fd.SelectedItems(1)
ActiveWorkbook.SaveAs path & "\result.xlsx"
End If
ユーザーとの“やさしい対話”が生まれます。
上書き保存と別名保存の違い
| 種類 | 内容 | よく使う場面 |
|---|---|---|
| Save | 上書き保存 | 編集中のブックをそのまま保存 |
| SaveAs | 別名保存 | バックアップ作成、出力ファイル作成 |
実務では SaveAs を使う場面が多い です。
注意点(実務で気をつけたいこと)
- 上書き保存は元データを壊す可能性
→ バックアップを作るなら SaveAs が安心。
- 保存先フォルダが存在しないとエラー
→ Dir で存在チェックすると安全。
- CSV保存は注意
→ 書式や数式が失われるため、用途を明確に。
- ネットワーク保存は遅い
→ エラー処理を入れておくと安定します。
応用:安全に保存する関数
Function SaveSafe(wb As Workbook, path As String) As Boolean
On Error GoTo ErrHandler
wb.SaveAs path
SaveSafe = True
Exit Function
ErrHandler:
SaveSafe = False
End Function
保存処理を関数化すると、
複数の処理で使い回せます。
まとめ
- 上書き保存は Save、別名保存は SaveAs
- 保存形式は FileFormat で指定できる
- 日付付きファイル名は実務でよく使う
- 保存先フォルダの存在チェックは必須
- フォルダ選択ダイアログと組み合わせるとユーザーに優しい
ファイル保存は、
処理の“しめくくり”を静かに支える大切な機能です。

保存処理が安定すると、
VBAの流れがぐっと安心感のあるものになります。
大切なデータを、やさしく確実に扱っていきましょう。

保存って、なんだか“今日の記録”を残すみたいでいいよね。
VBAなら、その記録をそっと守ってくれるよ。

コメント