← コード一覧へ戻る
実務ファイル

日付を付けた名前でバックアップ保存する

コードを保存した.xlsmブックを、日時入りの別の.xlsmファイルにコピー保存します。開いているブックの名前は変わりません。

実行前に確認

  • SaveCopyAsは形式を変換しません。この例は.xlsm専用です。未保存の編集内容もコピーに含まれますが、元のブック自体を上書き保存する処理ではありません。
  • 日時だけでは絶対に重複しないとは限りません。同名チェックを省略しないでください。

1サンプルコード

Sub バックアップを保存する()
    Dim backupPath As String

    If ThisWorkbook.Path = "" Or ThisWorkbook.FileFormat <> xlOpenXMLWorkbookMacroEnabled Then
        MsgBox "先にローカルフォルダーへ.xlsm形式で保存してください"
        Exit Sub
    End If
    backupPath = ThisWorkbook.Path & "\backup_" & _
        Format(Now, "yyyymmdd_hhmmss") & ".xlsm"

    If Dir(backupPath) <> "" Then
        MsgBox "同名ファイルがあるため中止します"
        Exit Sub
    End If
    ThisWorkbook.SaveCopyAs backupPath
    MsgBox "バックアップを保存しました"
End Sub

図で見るファイルの変化

イメージ図

コードの動きを表した概念図です。実際のExcel画面ではありません。

  1. 変更前:保存先フォルダー

    元の.xlsmブックがある 同名のbackup_ファイルはない

  2. マクロ:コピー先を作る

    ThisWorkbook.Path\backup_yyyymmdd_hhmmss.xlsm 日時部分は実行時のNow

  3. マクロ:SaveCopyAs

    現在の内容を同じフォルダーへコピー保存する

  4. 変更後:元+バックアップ

    元の.xlsmは残る backup_実行日時.xlsm が増える

未保存・.xlsm以外・同名ファイルありなら中止します。未保存の編集もコピーに含みますが、元ブックの上書き保存はしません。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
  1. 1

    Windows版のデスクトップExcelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]に、この例だけを貼り付けます。

  2. 2

    練習ブックをローカルフォルダーへ.xlsm形式で保存します。この例の保存先は同じフォルダーです。通常はパスを書き換える必要はありません。

  3. 3

    実行するSubの内側にカーソルを置き、F5キーを押します。

  4. 4

    同じフォルダーにbackup_年月日_時分秒.xlsmができます。開いているブックの名前は変わりません。同名のコピーが既にある場合は中止します。

使っている機能の公式ドキュメント(Microsoft Learn)