目次
経緯
Excelで作業していると、誤って保存してしまったり、ファイルが破損するといった事態は誰にでも起こり得ます。
そのようなトラブルに備えて、定期的にバックアップファイルを自動作成したいと思い、今回VBAとタスクスケジューラを組み合わせた方法を学習しました。
全体の流れ
この方法では、以下の3ステップで実現します。
- VBAで「ファイル保存マクロ」を作成
- マクロを実行するバッチ(VBS)ファイルを作成
- タスクスケジューラで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:タスクスケジューラで定期実行を設定する
- Windowsの「タスクスケジューラ」を開きます
- 右側の「タスクの作成」をクリックします
- 「全般」タブで任意の名前を入力(例:「バックアップ取得」)
- 「トリガー」タブ →「新規」→ 実行タイミングを設定(例:毎日14時)
- 「操作」タブ →「新規」→以下のように設定
- プログラム/スクリプト:
cscript.exe
- 引数の追加:
"C:\Path\To\SaveBackup.vbs"
(VBSファイルのパス)
- プログラム/スクリプト:
- 「OK」を押して完了します
動作確認の方法
タスクが正常に動作しているか確認するには、タスクスケジューラ内のタスクを選択し、右側の「実行」をクリックしてください。
設定通りであれば、指定したフォルダに自動でバックアップファイルが生成されるはずです。
補足事項
- フォルダ
C:\Backups
が存在しない場合は、あらかじめ作成しておいてください SaveAs
で保存するため、元のファイルは上書きされません- ファイルを開いたまま実行されると競合する可能性があるため、なるべく閉じた状態で実行するのが安全です
まとめ
VBAとタスクスケジューラを使えば、Excelファイルの自動バックアップを日常的に行うことが可能になります。
特に業務で使用しているファイルや、データが蓄積されるようなブックには非常に有効です。
定期バックアップを導入しておけば、万が一のデータ消失にも対応できる安心設計となります。
ぜひお試しください。
最後までお読みいただきありがとうございました。