こんにちは!ぐーです。
いつもブログをご覧いただき、ありがとうございます!
今日はExcel VBAの基本中の基本、「ファイルの保存」について解説します。
「保存なんて、ボタンをポチッとするだけでしょ?」と思うかもしれません。でも、マクロを覚え始めたばかりの頃は、「もしコードを書き間違えて、大事なデータを勝手に上書きしちゃったらどうしよう…」と不安になりませんか?
私も、初心者の頃は同じ恐怖を感じていました。
今日はそんな不安をスッキリ解消して、自信を持ってファイルを扱えるようになるコツをお伝えします!
1. 2つの保存の決定的な違い
VBAでファイルを保存する方法は、大きく分けて2つあります。
- Save(上書き保存):今開いているファイルを、そのまま最新の状態に更新します。
- SaveAs(名前を付けて保存):新しい名前や別の場所に、コピーを作る感覚で保存します。
SaveAsを実行すると、Excelが今開いているファイルそのものが「新しいファイル」に切り替わります。元のファイルは保存されず、そのまま閉じられた状態になります。
作業中のファイルをそのまま残しておきたい場合は、この挙動をしっかり押さえておきましょう。
2.コピペで使える!日付付き保存コード
特に仕事で重宝するのが、「毎日の売上データを日付付きで別保存したい」というシーンです。
以下のコードは、「今日の日付がついた新しいファイル」として保存するテンプレートです。これなら元データは無傷のまま残るので、万が一ミスをしても安心です。
Sub SaveDailyReport()
' 変数の宣言
Dim fileName As String
Dim folderPath As String
' 保存先のフォルダ(このブックと同じ場所)
folderPath = ThisWorkbook.Path & "\"
' ファイル名を作る
' Format関数で日付を整える
fileName = "売上報告書_" & Format(Date, "yyyymmdd") & ".xlsx"
' すでに同じ名前のファイルがある際、警告を出さないように設定
Application.DisplayAlerts = False
' 名前を付けて保存
On Error Resume Next ' 万が一のエラーでも止まらないように
ThisWorkbook.SaveAs Filename:=folderPath & fileName
'保存が成功したかチェック
If Err.Number = 0 Then
MsgBox "「" & fileName & "」として保存しました!", vbInformation
Else
MsgBox "保存に失敗しました…。ファイルが開いていないか確認してください。", vbExclamation
End If
On Error GoTo 0
' 設定を元に戻す
Application.DisplayAlerts = True
End Sub
3. シンプルな上書き保存(Save)はこちら
「バックアップは不要。とにかく今の最新状態を確定させたい!」という場合は、もっとシンプルに書けます。
Sub JustSave()
' 処理させたい内容を実行後
' 今のブックを上書き保存
ThisWorkbook.Save
MsgBox "上書き保存が完了しました!", vbInformation
End Sub
この2つを使い分けるだけで、VBAでのファイル操作はグッと安全になります。
ぜひ、用途に合わせて使い分けてみてください!
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。
リンク
リンク

コメント