【VBA】「あ、上書きしちゃった…」とサヨナラ!SaveとSaveAsの使い分けを解説

【業務効率化】VBA
スポンサーリンク

こんにちは!ぐーです。
いつもブログをご覧いただき、ありがとうございます!

今日はExcel VBAの基本中の基本、「ファイルの保存」について解説します。

「保存なんて、ボタンをポチッとするだけでしょ?」と思うかもしれません。でも、マクロを覚え始めたばかりの頃は、「もしコードを書き間違えて、大事なデータを勝手に上書きしちゃったらどうしよう…」と不安になりませんか?

私も、初心者の頃は同じ恐怖を感じていました。

今日はそんな不安をスッキリ解消して、自信を持ってファイルを扱えるようになるコツをお伝えします!

【業務効率化】VBAの記事を見る

1. 2つの保存の決定的な違い

VBAでファイルを保存する方法は、大きく分けて2つあります。

  1. Save(上書き保存):今開いているファイルを、そのまま最新の状態に更新します。
  2. 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の記事を見る


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でも、年間100万円以上の節約・資産管理・スキルアップで新NISAで年間360万円投資し、iDeCoもフル活用しています。日商簿記3級持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、稼ぐ力を高めるITスキルについて発信しています。

生活を豊かにしたくて、高配当株投資で年間配当金60万円をめざしています。現在は年間配当金25万円以上達成!

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました