- 01. はじめに|共有ファイルが消えた瞬間の「血の気が引く」やつ
- 02. この記事でできること|復元の初動3手順とVBA防衛術を実装できる
- 03. まず落ち着く|本当に削除されたのかを切り分ける
- 04. 復元手順1|ゴミ箱とクラウドのゴミ箱を最優先で確認する
- 05. 復元手順2|共有サーバーなら最強|以前のバージョンで戻す
- 06. 復元手順3|Excelファイルなら最後の砦|バージョン履歴と自動回復
- 07. ここまでで戻らないとき|管理者に依頼すべきポイント
- 08. 再発防止の考え方|人はミスをする前提で仕組みを作る
- 09. VBA防衛術|閉じるたびに勝手にバックアップを取る仕組み
- 10. 実装|コピーバックアップを自動生成するマクロ
- 11. 実運用レベルに仕上げる改良版|事故らないための追加機能
- 12. よくある質問|復元とVBAバックアップのつまずき解消
- 13. すぐ使えるチェックリスト|消えた直後と平常時にやること
- 14. まとめ|技術でミスをカバーするのがプロの仕事
01. はじめに|共有ファイルが消えた瞬間の「血の気が引く」やつ
どうも、くまおやぢです。
全社共有のフォルダを開いたら、あるはずの「売上管理表」がない。ゴミ箱を見ても空っぽ。
背筋が凍る、あの瞬間。経験ありませんか?
つい口から出そうになるのが、これです。
「誰だ!共有ファイルを消したやつは!」
ただ、怒号を飛ばしてもデータは戻ってきません。
そして現場を見ていると、これが真実です。
- 本当に削除されたのではなく、どこかに移動されている
- 同じ名前のファイルに上書きしてしまった
- クラウドやサーバーの機能で復元できるのに、知らないだけ
人間はミスをする生き物です。特に忙しい月末なんて、ドラッグ&ドロップの手元が狂って、隣のフォルダに移動してしまい「消えた!」と騒ぐ……これ、本当によくあります。
だからこそ、この記事では「精神論」ではなく、仕組みで助かる手順をまとめます。
具体的には、次の2つです。
- 復元編:Windowsの標準機能とクラウド機能で、削除されたファイルを復元する
- 予防編:VBAで「勝手にバックアップ」を取り、二度と悲劇を起こさない
復元できれば一安心。でも毎回これをやるのは、心臓に悪いですよね。
なので後半では、共有運用でも効く「VBA防衛術」として、ブックを閉じるたびに時限バックアップを自動保存するマクロをそのまま使える形で紹介します。
では、犯人探しの前にやるべきことから始めましょう。
02. この記事でできること|復元の初動3手順とVBA防衛術を実装できる
「ファイルが消えた!」というトラブルは、焦って動くほど泥沼化します。
逆に言うと、正しい順番で当てれば、意外とあっさり戻ることも多いです。
この記事でできるようになることは、大きく2つです。
復元編|Windows標準機能とクラウド機能で取り戻す
復元は、難しいことをする前に「標準機能」を使うのが鉄則です。この記事では、次の順番で確認します。
- ゴミ箱(ただし共有フォルダは挙動が違うので注意)
- クラウドのゴミ箱(OneDrive/SharePoint/Teams)
- 以前のバージョン(ファイルサーバー運用の最強機能)
さらに、Excelなら最後の砦として使える「バージョン履歴」「自動回復」も扱います。
予防編|VBAで自動バックアップを仕込んで悲劇を防ぐ
復元できたとしても、同じ事故が起きたらまた冷や汗です。
そこで後半では、VBAで「閉じるたびに自動でコピーを保存する」仕組みを作ります。
- 原本はそのまま
- 別フォルダに、日時付きでコピーが増えていく
- 誰かが削除・上書きしても、バックアップから戻せる
ポイントは、人の注意力に頼らないことです。人間はミスをする生き物。なら、仕組みでカバーするのがプロの仕事です。
この記事が向いている人|共有サーバーやTeams運用の現場担当
- 共有サーバーのExcelを複数人で運用している
- OneDrive/SharePoint/Teamsでファイル共有している
- 「消えた」「上書きした」「戻せない」で月末に胃が痛くなる
- 再発防止のために、VBAでバックアップを自動化したい
ここまで読んで「うちの現場だ…」と思ったなら、今日この記事の手順を入れておくだけで、次の事故対応が一気にラクになります。
次章からは、復元作業の前に必ずやってほしい「切り分け」から始めます。
03. まず落ち着く|本当に削除されたのかを切り分ける
ファイルが見当たらないとき、いきなり「削除だ!」と決めつけるのは危険です。
現場で多いのは、削除ではなく移動、もしくは見えなくなっているだけのパターン。
まずは深呼吸して、ここから確認しましょう。
消えたのではなく移動されているケース
最近使ったファイルと検索で探す
Excelファイルなら、まずはExcelの「最近使ったファイル」を見ます。
- Excelを開く
- スタート画面の「最近使用した項目」から該当ファイルを探す
見つかったら、保存場所(パス)を確認してください。たいてい「別フォルダに移動していた」が起きています。
次に、エクスプローラーの検索です。
- 共有フォルダの上位フォルダを開く
- 右上の検索ボックスに、ファイル名の一部(例:売上、管理表)を入力
移動しているなら、ここで高確率で見つかります。
同名ファイルの上書きと拡張子の取り違え
「ファイルはあるのに、中身が違う」場合は、別ファイルで上書きした可能性があります。
また、拡張子の違いも要注意です。
- .xlsx:通常のExcelファイル
- .xlsm:マクロ有効ブック
- .xls:古い形式
「拡張子が表示されていない」設定だと、見た目が同じに見えて事故ります。
共有フォルダ特有の落とし穴
ショートカットだけ消えている
デスクトップやよく使う場所に置いたショートカットだけが消えて、「ファイルが消えた!」と勘違いするケースがあります。
この場合、共有フォルダ本体を開いて検索すると、ファイル自体は生きていることが多いです。
表示設定で見えなくなっている
エクスプローラーの表示設定が変わると、ファイルが「見えていないだけ」になることがあります。
- 並び替えが「更新日時」になっていて奥に埋もれている
- フィルターやグループ化で見落としている
- 隠しファイル扱いになっている
ここまでで見つかれば、それは「削除」ではなく「行方不明」だっただけです。
見つからない場合は、いよいよ復元フェーズへ。
次章では、最優先で確認すべきゴミ箱とクラウドのゴミ箱から復元する手順をいきます。
04. 復元手順1|ゴミ箱とクラウドのゴミ箱を最優先で確認する
復元作業は、難しいことをする前に「戻る可能性が高くて、操作が安全な場所」から当たるのが鉄則です。
その筆頭が、ゴミ箱。
ただし、共有フォルダは少しクセがあります。順番にいきましょう。
Windowsのゴミ箱で復元できる条件
まず大前提として、Windowsのゴミ箱に入るのは「ローカルPC上で削除されたもの」が中心です。
ローカル削除とネットワーク削除の違い
- ローカル(自分のPC):削除するとゴミ箱に入ることが多い
- 共有サーバー(ネットワーク):削除するとゴミ箱を経由せず、いきなり消えることがある
なので、共有フォルダのファイルが消えた場合でも、まずは確認しつつ「なければ次へ」が正解です。
Windowsのゴミ箱で復元する手順
- デスクトップの「ゴミ箱」を開く
- ファイル名で並び替える、または検索ボックスで探す
- 見つけたら右クリックして「元に戻す」
これで戻った場合は、事件は解決です。次からは「どこで削除したか」を思い出して、事故ルートを潰しましょう。
OneDrive|SharePoint|Teamsならクラウドのゴミ箱が本命
最近は、Teamsのファイル共有の実体がSharePointだったり、個人はOneDriveだったりします。
この場合、PCのゴミ箱ではなく、Web版のゴミ箱に残っている可能性が高いです。
Web版での操作手順
- ブラウザでOneDriveまたはSharePointの該当場所を開く
- 左メニューの「ゴミ箱」をクリック
- 消えたファイルを選択し、「復元」を押す
Teamsの場合は、該当チームの「ファイル」タブからSharePointを開けることが多いです。
保持期間の目安と急ぐべき理由
クラウドのゴミ箱は永久保管ではありません。
運用設定にもよりますが、一定期間を過ぎると自動で消えます。
つまり、気づいたら即実行が正義です。
復元できないときのチェックポイント
すでに完全削除されている
誰かがゴミ箱からさらに削除すると、通常の操作では戻せなくなります。
クラウドの場合も、管理者側の復元機能が必要になるケースがあります。
権限が足りずゴミ箱が見えない
「ゴミ箱メニューが表示されない」「復元が押せない」場合、権限不足の可能性があります。
このときは無理に触らず、管理者や情シスに相談しましょう。触れば触るほど、状況が悪化することがあります。
ここまでで戻らない場合、次に当たるべきは共有サーバー運用の最強機能、以前のバージョンです。
次章で、フォルダ単位で過去に戻って救出する手順を解説します。
05. 復元手順2|共有サーバーなら最強|以前のバージョンで戻す
共有サーバー運用でファイルが消えたとき、個人的に「最強の救世主」だと思っているのが以前のバージョンです。
これが有効な環境なら、犯人探しをする前にほぼ勝てます。
以前のバージョンが効く仕組みをざっくり理解する
以前のバージョンは、Windowsの「過去の状態」にアクセスできる機能です。
会社のファイルサーバー側で、シャドウコピーなどの履歴が保存されている場合に使えます。
ポイントはここです。
- 戻す対象は「ファイル」ではなく、ファイルが入っていたフォルダ
- 過去時点のフォルダを開いて、中身を取り出すのが安全
- 復元というより「タイムマシンで覗いてコピー」が正攻法
実践|フォルダの以前のバージョンから救出する手順
やり方はシンプルです。ファイルではなく、入っていたフォルダに対して実行します。
- ファイルが入っていたフォルダを右クリック
- 「プロパティ」を選択
- 「以前のバージョン」タブを開く
- 日時の一覧から、ファイルが存在していた頃を選ぶ
- 「開く」をクリックして、過去のフォルダを表示
- 消えたファイルを見つけたら、別の場所にコピーする
フォルダを右クリック|プロパティ
ファイルが見つからないときほど、焦ってファイル単体で探しがちです。
でも、いったん視点を「フォルダ」に戻してください。これが成功率を上げます。
以前のバージョンを開く
一覧に日時が並んでいれば勝ちです。
「消えたのは今日だけど、昨日の夕方まではあった」なら、昨日の版を開けば中身が見えます。
コピーで取り出すのが安全な理由
以前のバージョン画面には「復元」というボタンがある場合もありますが、慣れるまではおすすめしません。
理由は単純で、フォルダ全体の状態を戻してしまうリスクがあるからです。
安全策はこれ。
- 過去のフォルダを開く
- 必要なファイルだけをコピーして救出
これなら、現行フォルダを壊さずに済みます。
うまく出てこない場合の原因
サーバー側設定で履歴がない
以前のバージョンは、サーバー側の設定が前提です。
一覧が空っぽなら、そもそも履歴が取られていない可能性があります。
対象が別の共有方式になっている
共有の実体がクラウド(SharePointなど)だったり、別の仕組みで配布されている場合もあります。
この場合は前章の「クラウドのゴミ箱」や、次章の「Excelのバージョン履歴」が本命になります。
ここまでの手順で戻るケースが多いですが、Excelファイルにはもう一段、復旧の手段があります。
次章では、Excel側の機能として使えるバージョン履歴と自動回復を解説します。
06. 復元手順3|Excelファイルなら最後の砦|バージョン履歴と自動回復
ゴミ箱にもない。以前のバージョンも出てこない。
それでも、Excelファイルならまだ勝負できます。
Excelには「クラウド保存」や「自動保存」と組み合わさることで強くなる、復旧の仕組みがいくつかあります。
ここでは、現場で効く順に紹介します。
Excelのバージョン履歴で戻す
OneDrive/SharePoint上のExcelなら、ファイル自体に版の履歴が残っていることがあります。
「ファイルが消えた」ではなく「上書きして壊した」場合に特に強いです。
OneDrive保存時の強み
- 自動保存が効いていると、編集の途中経過が版として残る
- 誰がいつ触ったかが、履歴として見えることがある
- 「元に戻す」の粒度がサーバーより細かいこともある
いつの版に戻すべきかの判断
版がたくさんあると迷いますが、判断のコツはシンプルです。
- 「壊れる前」を思い出せるなら、その直前の版を選ぶ
- 分からないなら、日時が近い版をいくつか開いて中身確認する
注意点として、戻す前に今のファイルも別名でコピーしておくと安全です。
自動回復ファイルから救う
「保存せずに閉じた」「Excelが固まって落ちた」「ネットワークが切れた」
こういう事故で強いのが、自動回復です。
自動回復の保存場所の探し方
Excelで次の場所を確認します。
- Excelを開く
- 「ファイル」をクリック
- 「情報」を開く
- 「ブックの管理」または「管理」を探す
- 「保存されていないブックの回復」が出ていればクリック
ここに残っているファイルは、救える可能性があります。
一時ファイルから復旧できるケース
環境によっては一時ファイルが残っていることもありますが、これは状況依存です。
操作を間違えると上書きで状況が悪化することもあるので、ここまでで戻らない場合は管理者や詳しい人に相談したほうが安全です。
復元作業でやってはいけないこと
最後に、復元フェーズでよくある「やらかし」を押さえておきます。
同じ場所に上書き保存する
復元できたファイルを、焦って元の場所・元の名前で上書きすると、別の復旧手段が潰れることがあります。
まずは別フォルダに救出し、中身確認してから戻すのが安全です。
復旧ソフトを焦って走らせる前に確認すること
復旧ソフトは最終手段です。
その前に、この記事で紹介している次の順番を必ず踏んでください。
- 検索・移動の可能性
- ゴミ箱(ローカル/クラウド)
- 以前のバージョン(共有サーバー)
- Excelのバージョン履歴・自動回復
ここまでやって戻らない場合は、個人の操作で粘るより、管理者に状況を渡して復旧ルートに乗せるのが賢いです。
次章では、情シスや管理者に依頼するときに「何を伝えるべきか」を、現場目線でまとめます。
07. ここまでで戻らないとき|管理者に依頼すべきポイント
ここまでの手順(検索・ゴミ箱・以前のバージョン・Excelの履歴)で戻らない場合、個人のPC操作で粘るフェーズは終わりです。
この先は、情シスやサーバー管理者の領域になります。
ただし、丸投げすると復旧が遅れます。
管理者が動きやすい情報を渡せるかで、復旧スピードが変わります。
情報を揃えると復旧が早い
最低限、次の情報をまとめて伝えましょう。
- ファイル名(正式名。分からなければ一部でもOK)
- 保存場所(共有フォルダのパス。どの階層か)
- 最後に存在を確認した日時(だいたいでOK)
- 最後に編集した人(心当たりがあれば)
- 気づいた日時(いつ消えたと判明したか)
- 自分が行った操作(検索、ゴミ箱確認など)
この情報があるだけで、管理者側はログやバックアップを当てやすくなります。
監査ログで分かること|分からないこと
環境によりますが、共有サーバーやクラウドには「誰が」「いつ」「何をしたか」を追える仕組みがあります。
ただし現場で勘違いしやすい点もあります。
- ログがあっても、運用設定次第で詳細まで追えないことがある
- ログはあっても、担当者がすぐ見られるとは限らない
- 犯人探しに使うより、復旧と再発防止に使うほうが現場は平和
「誰が消したか」を確定させても、データが戻るわけではありません。
優先順位は、あくまで復旧です。
ルール化の提案|削除権限と変更権限の分離
共有フォルダのトラブルは、権限設計でかなり減らせます。
よくあるのが「全員フル権限」運用です。
これだと、誤削除も誤移動も起き放題になります。
現場で効く考え方は、こうです。
- 変更(編集・追加)はOKにする
- 削除は制限する(できる人を絞る)
- 少なくとも重要ファイルの置き場だけは、権限を固める
ただ、権限変更は管理者調整が必要で、すぐに動けない会社も多いでしょう。
そこで次章からは、現場側で今日からできる「再発防止」を整理します。
次は、注意喚起ではなく仕組みで守るための考え方、予防の3層構造を紹介します。
08. 再発防止の考え方|人はミスをする前提で仕組みを作る
ファイル消失は、ほぼ100%がヒューマンエラーです。
そして残念ながら、ヒューマンエラーは「気をつけよう」で減りません。
なぜなら、忙しいときほど注意力は落ちるからです。
月末、締め、電話、チャット、上司の催促。こういうタイミングで手元が狂い、ドラッグ&ドロップで別フォルダに移動してしまう。
これは個人の性格ではなく、構造的に起きます。
注意喚起だけでは減らない理由
「削除しないでください」「このフォルダは触らないでください」
張り紙やチャットの周知は大事です。でも、それだけだと限界があります。
- 読まれない
- 読んでも忘れる
- 分かっていても、手が滑る
だから、再発防止は「注意」より仕組みです。
予防の3層構造|権限|履歴|バックアップ
現場で効く再発防止は、次の3つを重ねることです。
- 権限:そもそも壊せないようにする
- 履歴:壊れても過去に戻れるようにする
- バックアップ:最悪でもコピーから復旧できるようにする
このうち、権限は管理者調整が必要なことが多いです。
履歴もサーバー設定が絡みます。
そこで現場が今日から着手しやすいのが、3つ目のバックアップです。
そして、バックアップは「手でやる」と続きません。
続かないものは、存在しないのと同じです。
だから、勝手に取られる仕組みが最強になります。
現場で効く小さな改善
VBAに入る前に、運用だけで事故が減る小技も置いておきます。
共有フォルダの整理ルール
- 重要ファイルは「重要」などのフォルダに集約して、触る場所を限定する
- 編集する人と閲覧だけの人を分ける(可能なら権限も分ける)
- フォルダ階層を深くしすぎない(迷子になりやすい)
ファイル名と版管理の基本
- ファイル名に日付を入れるなら、2026-02-16のように並びが崩れない形式にする
- 「最終」「最新版」「確定」の乱立をやめる
- 更新担当者が複数なら、版管理は自動化する
保存先を固定する導線づくり
- ショートカットを配るなら、ファイル直リンクよりフォルダリンクにする
- 保存先がバラつく場合は、テンプレートから作成して保存場所を統一する
とはいえ、最も強いのは「閉じるたびにバックアップが増える」仕組みです。
次章から、VBA防衛術として、Excelを閉じるたびに自動でコピーを保存する仕組みを作ります。
09. VBA防衛術|閉じるたびに勝手にバックアップを取る仕組み
ここからが、再発防止の本丸です。
人間はミスをします。なら、ミスをゼロにするのではなく、ミスしても復旧できる状態を作る。
そのためにVBAで「勝手にバックアップ」を取らせます。
なぜVBAで効くのか|運用負荷がゼロに近い
バックアップ運用が失敗する最大の理由は、「手でやる」からです。
- 忙しいと忘れる
- 忘れた日だけ事故が起きる
- 運用ルールが形骸化する
だから、現場で生き残るのは自動化だけ。
VBAなら、Excelファイルに仕込むだけで、使う人が何も意識しなくてもバックアップが溜まっていきます。
仕組みの全体像|時限バックアップの考え方
今回作るのは、いわゆる「世代バックアップ」です。
ブックを閉じるたびに、指定フォルダにコピーを保存します。
イメージはこうです。
- 作業者がいつも通り開く
- いつも通り保存して閉じる
- 裏で「日時付きコピー」が別フォルダに自動保存される
何世代残すか
バックアップは増え続けるので、運用では「何世代残すか」を決めるのが重要です。
- まずは30世代(約1か月分)など、分かりやすい数字で始める
- ファイルサイズが大きい場合は、世代数を減らすか、週次保存にする
この記事の後半で、古いバックアップを自動削除する改良案も紹介します。
どこに置くか|ローカル|サーバー|隠しフォルダ
バックアップ先は、状況に合わせて選びます。
- ローカルPC:手軽。ただしPC故障に弱い
- 共有サーバー:全員で復旧できる。権限設計が重要
- 隠しフォルダ:誤削除を減らせる。ただし運用は管理者と相談
現場でおすすめは「共有サーバー上のバックアップ専用フォルダ」です。
原本と同じ場所に置くのではなく、別階層にするのがコツです。
SaveCopyAsのメリット
今回の仕組みで主役になるのが、VBAのSaveCopyAsです。
これが強い理由は、次の2つ。
原本が切り替わらない
よくある「名前を付けて保存(SaveAs)」だと、保存した瞬間に作業対象がバックアップ側に切り替わることがあります。
これが事故の元です。
SaveCopyAsは、今作業している原本はそのままに、コピーだけを指定場所に保存します。
つまり、運用がブレません。
履歴を自動で積み上げられる
ファイル名に日時を付けて保存すれば、上書きされず履歴が増えます。
「5分前のデータがある」状態を、仕組みで作れます。
次章では、実際に動くコードをそのまま貼れる形で紹介します。
ブックを閉じるたびに、自動で時限バックアップを作るマクロを実装していきましょう。
10. 実装|コピーバックアップを自動生成するマクロ
ここからは実装です。
今回のゴールは、ブックを閉じる直前に、別フォルダへ日時付きコピーを自動保存すること。
やることはシンプルですが、貼る場所とパス指定でつまずきやすいので、現場目線で噛み砕きます。
コード貼り付け場所|ThisWorkbookに入れる理由
この仕組みは、Excelの「イベント」を使います。
今回使うのは、ブックが閉じられる直前に動くWorkbook_BeforeCloseです。
だから、貼り付け場所はここ一択です。
- VBE(Visual Basic Editor)を開く
- 対象ブックのThisWorkbookを開く
- コードを貼り付ける
標準モジュールに貼ると動きません。必ずThisWorkbookです。
サンプルコード|Workbook_BeforeCloseで自動バックアップ
以下を、そのままThisWorkbookに貼り付けてください。
' ブックを閉じるときに自動的にバックアップを作成する
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim BackupPath As String
Dim FName As String
' バックアップを保存するフォルダ(※事前に作っておくこと!)
' 例:CドライブのBackupフォルダ
BackupPath = "C:\Backup\"
' ファイル名:元の名前_20260216_120000.xlsm のように日時をつける
FName = Replace(ThisWorkbook.Name, ".xlsm", "") & "_" & Format(Now, "yyyymmdd_hhmmss") & ".xlsm"
' バックアップ実行(エラー回避のためOn Errorを入れています)
On Error Resume Next
ThisWorkbook.SaveCopyAs Filename:=BackupPath & FName
On Error GoTo 0
End Sub
ファイル名に日時を付ける
ポイントは、秒単位の日時を入れることです。
これで上書きされず、履歴が溜まります。
エラー時に止めない配慮
バックアップ先のフォルダが存在しない、権限がない、ネットワークが切れた。
こういうときにExcelがエラーで止まると、現場は混乱します。
そこでサンプルでは、最低限の保険としてエラー回避を入れています。
ただし、これには副作用もあります。
失敗しても気づけないので、実運用では後章の「ログ出力」や「メッセージ通知」を足すのがおすすめです。
実務で詰まりやすいポイント
パスの末尾の\問題
BackupPathの末尾に「\」がないと、パスが連結されて失敗します。
例:C:\Backup + ファイル名 → C:\Backup売上管理表… になってしまう
必ず末尾を「\」で終わらせてください。
xlsxとxlsmの拡張子問題
サンプルはxlsm(マクロ有効)前提です。
守りたいブックがxlsxなら、ファイル名の作り方を調整します。
例として、拡張子をそのまま活かすなら、こんな考え方が安全です。
- 元の拡張子を削らず、ファイル名に日時を差し込む
- もしくは、拡張子を判定して付け替える
後章で「事故らない改良版」を出します。
共有サーバーでの権限と保存失敗
バックアップ先を共有サーバーにする場合、保存権限が必要です。
さらに、バックアップフォルダに全員が触れると、今度は「バックアップが消える」事故が起きます。
理想はこうです。
- バックアップフォルダは、通常ユーザーは読み取りのみ
- 保存だけ許可する仕組みは環境依存なので、管理者と相談
- 最低でも、バックアップ用フォルダを原本と分離する
ここまでで、基本の「自動バックアップ」は完成です。
ただ、現場で本当に使うなら、このままだと弱点もあります。
次章では、バックアップフォルダ自動作成、世代管理、ログ出力など、実運用レベルに仕上げる改良版を紹介します。
11. 実運用レベルに仕上げる改良版|事故らないための追加機能
前章のマクロは「まず動く」ことを優先した最小構成です。
ただ、現場で使い続けるなら弱点があります。
- バックアップフォルダが無いと保存に失敗する
- バックアップが増え続けて容量を圧迫する
- 保存失敗しても気づけない
ここでは、よくある事故を潰すための改良版を紹介します。
バックアップフォルダが無いなら自動作成する
運用で一番多いのが、「フォルダ作っておいてね」が守られず保存失敗するパターンです。
なら、VBAで作ります。
' ブックを閉じるときにバックアップフォルダが無ければ作成してから保存する
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim BackupPath As String
Dim BaseName As String
Dim Ext As String
Dim FName As String
' バックアップ先(末尾は\)
BackupPath = "C:\Backup\"
' フォルダが無ければ作成
On Error Resume Next
If Dir(BackupPath, vbDirectory) = "" Then
MkDir BackupPath
End If
On Error GoTo 0
' 元ファイル名と拡張子を分解(xlsx/xlsmどちらでも対応)
Ext = Mid(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, "."))
BaseName = Left(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".") - 1)
' 日時付きファイル名を生成
FName = BaseName & "_" & Format(Now, "yyyymmdd_hhmmss") & Ext
' コピー保存
On Error Resume Next
ThisWorkbook.SaveCopyAs Filename:=BackupPath & FName
On Error GoTo 0
End Sub
この形にしておくと、xlsxでもxlsmでも拡張子を気にせず運用できます。
バックアップの世代管理|古いものを自動削除する
自動バックアップの「最大の欠点」は、放っておくと増え続けることです。
現場で現実的なのは、最新N個だけ残す方式。
考え方はこうです。
- バックアップフォルダ内のファイルを更新日時で並べる
- 上位N個を残し、それ以外を削除する
VBAでの実装は少し長くなるので、ここでは運用でまず決めるべき基準だけ押さえます。
- まずは30世代から始める
- 締め処理など重要業務があるなら、90世代も検討
- ファイルが重いなら、週次バックアップもあり
世代管理のコードは次の「つまずきやすい質問」章でも触れますが、必要なら記事内の続編として切り出すのもおすすめです。
保存失敗を見逃さない|ログ出力|メッセージ設計
On Error Resume Nextは、現場を止めない代わりに「失敗に気づけない」という欠点があります。
なので実運用では、最低限これを入れると安心です。
エラーが出たらログに残す
バックアップ保存に失敗したら、テキストに記録するだけでも効果があります。
例としては、バックアップフォルダに「BackupLog.txt」を作り、日時とエラー内容を追記します。
見せるメッセージは最小限にする
毎回「バックアップしました」と出すと、作業者は必ず閉じる癖がついて読まなくなります。
出すなら、失敗時だけが正解です。
個人情報と機密の扱い
バックアップは便利ですが、機密の複製でもあります。
ここを軽く見ると、別の事故になります。
バックアップ先のアクセス制御
- バックアップ先は、必要最小限の人だけが見られるようにする
- 原本と同じ権限で置かない
ファイル暗号化と運用ルール
会社のルールがあるなら、そのルールに合わせて暗号化や保管期間を決めましょう。
VBAで何でもできるからこそ、運用側の合意が大事です。
ここまでで、VBAバックアップは「実務で耐える形」になります。
次章では、読者がつまずきやすいポイントをまとめて、Q&A形式で一気に解決します。
12. よくある質問|復元とVBAバックアップのつまずき解消
ここでは、現場で実際に詰まりやすい質問をまとめます。
復元編とVBA防衛術、どちらも「ここで止まりがち」です。
以前のバージョンが表示されない
考えられる原因は主に2つです。
- サーバー側で履歴(シャドウコピー等)がそもそも有効になっていない
- 見ている場所が、実はサーバー共有ではなくクラウド共有だった
対処としては、管理者に「以前のバージョンが出ない。履歴保存設定が有効か確認してほしい」と依頼するのが最短です。
OneDriveやSharePointのゴミ箱に見当たらない
この場合は、次の可能性を疑います。
- 別のサイト(別チーム、別ライブラリ)を見ている
- ファイルではなくフォルダごと移動・削除されている
- すでにゴミ箱から削除されている
- 権限不足でゴミ箱が見えていない
特に多いのが「TeamsのファイルはSharePoint上にある」ことを知らずに、別の場所のゴミ箱を見ているケースです。
マクロが動かない|セキュリティ設定が原因
VBAが動かないとき、コードのミスより多いのがマクロのブロックです。
- ファイルがインターネット由来と判定され、マクロがブロックされている
- 会社のポリシーで、マクロ実行が制限されている
- 保存形式がxlsxで、コードを入れても保存時に消える
基本として、マクロを仕込むファイルは.xlsmで保存してください。
共有フォルダだとバックアップが保存できない
原因はだいたいこの3つです。
- バックアップ先フォルダに書き込み権限がない
- パスが長すぎる、またはパスが間違っている
- ネットワークが不安定で、閉じる瞬間に保存が失敗している
対策としては、まずバックアップ先を「自分のPCのCドライブ」にして動作確認し、動くことを確認してから共有サーバーに移すのが安全です。
バックアップが増えすぎる|世代管理で解決
これは自動バックアップ運用あるあるです。
対策は、次のどれかにします。
- 最新N個だけ残す(例:30世代)
- 古いものは日付基準で削除(例:90日より前を削除)
- 閉じるたびではなく、1日1回だけ保存する
現場で最も扱いやすいのは「最新N個だけ残す」です。
削除を自動化する場合は、誤削除のリスクもあるので、最初はバックアップフォルダを「削除不可」にするなど、運用とセットで考えましょう。
次章では、この記事の内容をそのまま現場で使えるように、チェックリストとしてまとめます。
トラブル発生直後に慌てないための「順番」が、ここで完成します。
13. すぐ使えるチェックリスト|消えた直後と平常時にやること
いざ「ファイルが消えた!」となると、人は焦って順番が崩れます。
だから、順番を固定したチェックリストが最強です。
ここは、印刷して机に貼ってもいいレベルでまとめます。
消失直後のチェックリスト
まずは「削除」と決めつけず、上から順に潰します。
- 検索する(移動の可能性を消す)
- Excelの最近使ったファイルで場所を確認
- 共有フォルダの上位でファイル名検索
- ゴミ箱を確認
- Windowsのゴミ箱(ローカル削除の可能性)
- OneDrive/SharePoint/TeamsのWeb版ゴミ箱(クラウド共有の可能性)
- 以前のバージョンを確認(共有サーバー運用の本命)
- ファイルではなく「入っていたフォルダ」のプロパティから確認
- 見つけたら「復元」より先に「開いてコピー」が安全
- Excel側の復旧を確認
- バージョン履歴(OneDrive/SharePoint保存なら特に強い)
- 保存されていないブックの回復(自動回復)
- 管理者に依頼(ここまでで戻らない場合)
- ファイル名
- 保存場所(パス)
- 最後に存在を確認した日時
- 気づいた日時
- 自分がやったこと(検索、ゴミ箱確認など)
この順番でやれば、無駄に状況を悪化させずに済みます。
復元後の再発防止チェックリスト
戻った瞬間に終わりにすると、また同じ悲劇が起きます。
復元できたら、最低限これだけはやっておきましょう。
- バックアップの置き場を決める
- 原本と同じフォルダに置かない
- できれば別階層のバックアップ用フォルダにする
- VBAで自動バックアップを仕込む
- ThisWorkbookに貼る
- SaveCopyAsで日時付きコピーを保存
- バックアップの世代数を決める
- まずは30世代など、運用しやすい数字から
- 権限の見直しを相談する
- 重要フォルダだけでも削除権限を絞れないか
管理者に渡す依頼テンプレート
困ったときにコピペできる形にしておきます。
【ファイル消失の復旧依頼】
・ファイル名:
・保存場所(共有フォルダのパス):
・最後に存在を確認した日時:
・消失に気づいた日時:
・心当たりのある編集者:
・自分が確認したこと:
- 検索(実施/未実施)
- ゴミ箱(ローカル)(実施/未実施)
- ゴミ箱(OneDrive/SharePoint)(実施/未実施)
- 以前のバージョン(実施/未実施)
- Excelのバージョン履歴/自動回復(実施/未実施)
このテンプレを使えば、「状況が分からないから確認が進まない」を減らせます。
そして最後の章では、この記事の結論をまとめます。
キーワードは一つ。技術でミスをカバーするのがプロの仕事です。
14. まとめ|技術でミスをカバーするのがプロの仕事
共有ファイルが消えた瞬間の、あの血の気が引く感覚。
現場で働く人なら、誰でも一度は経験します。
ただし、そこで「誰だ!」と叫んでも、データは戻りません。
プロがやるべきは、犯人探しではなく復旧の初動と再発防止の仕組み化です。
復元は初動がすべて|まずは標準機能から
復元は、難しいことをする前に「戻る可能性が高い順」に当たるのが鉄則でした。
- 検索(移動の可能性を消す)
- ゴミ箱(ローカル/クラウド)
- 以前のバージョン(共有サーバーの最強機能)
- Excelのバージョン履歴/自動回復
この順番を覚えておくだけで、トラブル対応の成功率とスピードが変わります。
予防は仕組み化がすべて|VBAで裏側を固める
ファイル消失はヒューマンエラーです。
そしてヒューマンエラーは、精神論では減りません。
だからこそ、VBAの出番です。
- ブックを閉じるたびに
- 別フォルダへ
- 日時付きでコピーを保存する
この仕組みがあるだけで、
「間違って上書きしちゃった!」にも「消しちゃった!」にも、涼しい顔で対応できます。
今日やるべき最小アクション
最後に、今日やっておくと未来の自分が助かる行動を3つに絞ります。
- 復元手順の順番を、チームで共有する
- 重要なExcelには、ThisWorkbookに自動バックアップマクロを仕込む
- バックアップ先フォルダと世代数(例:30世代)を決める
人の注意力は、忙しさの前では無力です。
だから、仕組みで守る。
技術でミスをカバーするのがプロの仕事。
もし「うちの環境だとバックアップ先のパスをどう設計すればいいか分からない」「共有サーバー運用でも安全に回したい」など、現場事情に合わせた最適化が必要なら、ブログのお問い合わせから相談してください。
現場で本当に機能する“守り”の仕組み作り、一緒にやりましょう。

コメント