【VBA×タスクスケジューラ】Excelファイルのバックアップを自動で取得する方法

目次

経緯

Excelで作業していると、誤って保存してしまったり、ファイルが破損するといった事態は誰にでも起こり得ます。
そのようなトラブルに備えて、定期的にバックアップファイルを自動作成したいと思い、今回VBAとタスクスケジューラを組み合わせた方法を学習しました。


全体の流れ

この方法では、以下の3ステップで実現します。

  1. VBAで「ファイル保存マクロ」を作成
  2. マクロを実行するバッチ(VBS)ファイルを作成
  3. タスクスケジューラでVBSファイルを定期実行

ステップ1:VBAマクロを作成する

まずは、Excelブックに以下のVBAコードを記述します。

Sub SaveBackup()
    Dim filePath As String
    filePath = "C:\Backups\Backup_" & Format(Now, "yyyymmdd_hhmmss") & ".xlsm"
    ThisWorkbook.SaveAs filePath
End Sub
  • 保存先は C:\Backups\ フォルダを例にしています。実際のパスは任意で変更してください
  • ファイル名は Backup_20240430_153000.xlsm のように「日付+時間」形式で保存されます
  • バックアップ形式は .xlsm(マクロ有効ブック)です

ステップ2:マクロを実行するVBSファイルを作成する

次に、メモ帳を開き、以下のコードを貼り付けます。

Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("C:\Path\To\YourWorkbook.xlsm")
objExcel.Run "SaveBackup"
objWorkbook.Close
objExcel.Quit
  • YourWorkbook.xlsm の部分には、実際のExcelファイルのパスを指定してください
  • SaveBackup はマクロ名です。VBAで定義した名称と一致している必要があります

ファイル名は SaveBackup.vbs とし、エンコード形式は ANSI で保存してください。
UTF-8 で保存すると動作しない場合があります。


ステップ3:タスクスケジューラで定期実行を設定する

  1. Windowsの「タスクスケジューラ」を開きます
  2. 右側の「タスクの作成」をクリックします
  3. 「全般」タブで任意の名前を入力(例:「バックアップ取得」)
  4. 「トリガー」タブ →「新規」→ 実行タイミングを設定(例:毎日14時)
  5. 「操作」タブ →「新規」→以下のように設定
    • プログラム/スクリプト:cscript.exe
    • 引数の追加:"C:\Path\To\SaveBackup.vbs"(VBSファイルのパス)
  6. 「OK」を押して完了します

動作確認の方法

タスクが正常に動作しているか確認するには、タスクスケジューラ内のタスクを選択し、右側の「実行」をクリックしてください。
設定通りであれば、指定したフォルダに自動でバックアップファイルが生成されるはずです。


補足事項

  • フォルダ C:\Backups が存在しない場合は、あらかじめ作成しておいてください
  • SaveAs で保存するため、元のファイルは上書きされません
  • ファイルを開いたまま実行されると競合する可能性があるため、なるべく閉じた状態で実行するのが安全です

まとめ

VBAとタスクスケジューラを使えば、Excelファイルの自動バックアップを日常的に行うことが可能になります。
特に業務で使用しているファイルや、データが蓄積されるようなブックには非常に有効です。

定期バックアップを導入しておけば、万が一のデータ消失にも対応できる安心設計となります。
ぜひお試しください。

最後までお読みいただきありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次