皆さん、こんにちは。Excel VBA講師です。前回は「定時自動保存」の基礎を学びましたが、今回は実務で最も恐ろしい「保存処理中のエラー」と「ファイルの上書きリスク」を回避するための、一歩踏み込んだ実装テクニックを解説します。
なぜ「単純な保存」だけでは危険なのか
実務において、ただ「Save」するだけのマクロは、実は非常に危険です。もしネットワーク上の共有フォルダで作業している最中に一瞬でも回線が途切れたら?あるいは、別のユーザーが同時にファイルを開いていたら?VBAはエラーを吐き出し、最悪の場合、プログラムが異常終了して作業内容が消えてしまいます。
ベテランの現場では、「保存前後の状態チェック」が必須です。
エラーを握りつぶさず、ログを残す
単純な「ActiveWorkbook.Save」ではなく、エラーハンドリングを組み込んだ記述を習慣にしましょう。
実装コード例
以下のコードを参考にしてください。
On Error Resume Next
ActiveWorkbook.Save
If Err.Number <> 0 Then
MsgBox “保存に失敗しました。ローカルへコピーを保存してください。”
‘ ここでログファイルへ書き出す処理を呼び出す
Err.Clear
End If
On Error GoTo 0
このように、エラーが発生した事実をユーザーに知らせることが、トラブル対応の初動を早くする鍵です。
「別名保存」で履歴を残すという選択肢
毎回上書きするのではなく、日付と時刻を付与して「別名保存(バックアップ)」を自動で行う手法も非常に有効です。これをしておけば、「先週のデータに戻したい」という急な要望にも即座に対応できます。
Format(Now, “yyyymmdd_hhnn”)
この関数を使ってファイル名にタイムスタンプを付与するだけで、あなたのExcelファイルは「単なる作業用データ」から「管理された資産」へと変わります。
今回のまとめ
1. 単純な「Save」は過信しない。
2. エラーハンドリング(On Error)を必ず組み込む。
3. タイムスタンプを活用して、履歴を残す運用を検討する。
次回は、この自動保存機能に「作業を中断させない工夫(バックグラウンド処理の考え方)」を組み込んでいきます。次回もぜひお付き合いください。
