エクセル雑感
VBAが消えてしまった!マクロが壊れて動かない!

ExcelマクロVBAとエクセル関数についての私的雑感
最終更新日:2020-05-09

VBAが消えてしまった!マクロが壊れて動かない!


2020年4月15日に配信されたWindows10用セキュリティ更新プログラムの不具合で、
なんと、VBAが全て消えてしまうという事が発生しています。
今後もあり得る事なので、このような場合の対策について記しておきます。


VBAが消えてしまうとはどんな状態なのか

エクセルファイルを開くと、以下のようなメッセージが出力されます。

始めて開いたファイルか、開いたことのあるファイルかにより、メッセージが違う場合があります。

VBA マクロ VBAが消えてしまった

VBA マクロ VBAが消えてしまった

下のメッセージの場合に、「はい」を選択しても、

VBA マクロ VBAが消えてしまった

結局、どちらのメッセージで、どれを応答したとしても、VBAは消えてなくなってしまいます。

Alt + F11 でVBEを開くと、シートの一覧しか表示されず、標準モジュールが丸ごとごっそり無くなってしまっています。

※このとき、決して上書き保存してはいけません。
バックアップなしに上書き保存してしまったら、VBAを回復することはできなくなります。

ロールバックによる対処

(修正Upd リリース) 4月の更新プログラムでマクロ付きエクセルファイルが読めなくなる不具合への復旧方法の紹介

これは、問題発生する前に戻すという方法です。
4月配信の更新プログラムによる不具合は、3月時点のバージョンへ戻す事により復旧できます。
Office365(Micorsoft365)/2019/2016/2013 はロールバック、Office2010はKBのアンインストールで行ないます。

ここに記載されている通りで良いはずです。
また、同様の内容を画像付きでより詳しく解説しているページも多数ありますので参考にしてください。


全てのPCで上記を行う必要はありません。
また、アッブデートを止めているPCがあれば、それを使ってください。

そして、問題のファイルを開いてVBAの存在を確認出来たら、まずはVBA一式をエクスポートして確保しておきます。
その上で、
コンパイルを行って、問題の出るPCで開いて確認。
VBA一式を削除してインポートし直し、問題の出るPCで開いて確認。
等々、何通りか対処してみましょう。

この辺りで解決すれば良いですが、これでダメなら、とにかく問題の出るPCで開いてしまいましょう。
当然VBAは無くなりますが、シートは残っているはずですので、それで構いません。
エクスポートして確保してあるVBA一式を、インポートもしくはコピペで貼りつけるなりして回復させてください。

VBAだけを別途取り出す

ロールバックは結構面倒ですし、慣れないと何やら難しそうに感じるかもしれません。
以下は最終手段ではありますが、今回の件に限らず、VBA救出の手段として覚えておくと良いでしょう。

以下の操作は、間違った操作によるトラブル防止のため、
元のファイルをコピーし、コピーしたファイルで実行してください。

拡張子を変更する:.xlsmを.zip

以下の手順で実行してください。

1.拡張子の.xlsmを.zipに変更します。
VBA マクロ VBAが消えてしまった

VBA マクロ VBAが消えてしまった

VBA マクロ VBAが消えてしまった

「はい」で変更してください。

2..zipをエクスプローラーで開く
.zipに変更したら、そのファイルをエクスプローラーで開きます。

VBA マクロ VBAが消えてしまった

右クリックメニューの下の方に、
「プログラムから開く」→「エクスプローラー」

VBA マクロ VBAが消えてしまった

3.フォルダxlを開きます。
xlを開いてください。
以下の画像は、たまたま手持ちで発生したファイルになりますので、
細部の構成が若干違うと思いますが、気にしなくて良いです。


VBA マクロ VBAが消えてしまった

4.vbaProject.binをコピーして確保
vbaProject.binこれをコピーして、どこかへ確保してください。
これを仮に、確保VBA(vbaProject.bin)とします。

VBA マクロ VBAが消えてしまった

確保VBA(vbaProject.bin)は後ほど使用します。

5...xlsmに戻しておく
拡張子を.xlsmに戻しておきましょう。
xlsmに戻したら、エクスプローラーは閉じてください。

新規ブックを作成する

以下の手順で実行してください。

1.新規ブックを作成
2.Alt + F11 でVBEを起動
3.標準モジュールの挿入
VBA マクロ VBAが消えてしまった

4.Subの作成
sub aaa
これだけ入力してEnterで構いません。
要は何でも良いので、プロシージャーを1つ作ります。

VBA マクロ VBAが消えてしまった

5.xlsm(マクロ有効ブック)で保存
これを仮に新規xlsmとします。

新規xlsmを.zipにしてエクスプローラーで開く

続けて以下の手順を実行します。

1.新規xlsmの拡張子を.zipに変更
VBA マクロ VBAが消えてしまった

VBA マクロ VBAが消えてしまった

2.右クリックからエクスプローラーで開く
VBA マクロ VBAが消えてしまった

3.フォルダxlを開きます。
xlを開いてください。

VBA マクロ VBAが消えてしまった

4.確保VBA(vbaProject.bin)で置換
vbaProject.binを、確保VBA(vbaProject.bin)で置き換えてください。

5..xlsmに戻す
拡張子を.xlsmに戻してください。
xlsmに戻したら、エクスプローラーは閉じてください。

新規xlsmを開いてVBAを取り出す

新規xlsmを開いてみましょう。

VBA マクロ VBAが消えてしまった

標準モジュールが追加されているのが確認できるはずです。
さらに、元々作成した新規ブックはSheet1だけだったはずですが、シートモジュールまで増えているのも確認できます。
後は、エクスポートして元のファイルでインポートするなり、コードをコピペするなりして回復させてください。



同じテーマ「エクセル雑感」の記事

「ポケモンを確実に見つける方法」をExcelで数学してみた
エクセルで「もういくつ寝るとお正月」
エクセルで連立方程式を解く(MINVERSE,MMULT)
VBAが消えてしまった!マクロが壊れて動かない!
エクセル関連ツイート
エクセル関連ツイートNo2
エクセル関連ツイートNo3
エクセル関連ツイートNo4
エクセル関連ツイートNo5
VBAコーディング規則に関する連ツイ
「VBAによる解析シリーズその2 カッコ」をやってみた


新着記事NEW ・・・新着記事一覧を見る

VBA100本ノック 7本目:日付データの扱い|VBA練習問題100(10月26日)
VBA100本ノック 6本目:セルに計算式|VBA練習問題100(10月25日)
VBA100本ノック 5本目:セルの計算|VBA練習問題100(10月24日)
VBA100本ノック 4本目:セルの消去|VBA練習問題100(10月23日)
VBA100本ノック 3本目:セルの消去|VBA練習問題100(10月22日)
VBA100本ノック 2本目:セルのコピー|VBA練習問題100(10月21日)
VBA100本ノック 1本目:セルのコピー|VBA練習問題100(10月20日)
VBA100本ノック:マクロの特訓(9月6日)
数式の関数の使用回数、関数名を配列で返す|エクセル雑感(10月19日)
Rangeオブジェクトを受け取り"行数,列数"で埋める|エクセル雑感(10月16日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.マクロって何?VBAって何?|VBA入門
6.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.とにかく書いてみよう(Sub,End Sub)|VBA入門
10.マクロはどこに書くの(VBEの起動)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ