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

ExcelマクロVBAとエクセル関数についての私的雑感
公開日:2020-05-08 最終更新日: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だけだったはずですが、シートモジュールまで増えているのも確認できます。
後は、エクスポートして元のファイルでインポートするなり、コードをコピペするなりして回復させてください。



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

エクセルVBAあるある
Excelマクロを書くのに○○力は必用か?
「offsetまとめ」検索ワードで非常に多いoffset
Excelのリンクの管理について
プログラミングとは
「ネ申Excel」問題 への同意と反論
「Excel3ステップ理論」3階層システムの応用
「ポケモンを確実に見つける方法」をExcelで数学してみた
エクセルで「もういくつ寝るとお正月」
エクセルで連立方程式を解く(MINVERSE,MMULT)
VBAが消えてしまった!マクロが壊れて動かない!


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

イータ縮小ラムダ(eta reduced lambda)|エクセル入門(2023-11-20)
PIVOTBY関数(縦軸と横軸でグループ化して集計)|エクセル入門(2023-11-19)
GROUPBY関数(縦軸でグループ化して集計)|エクセル入門(2023-11-18)
PY関数(Pythonコードをセル内で実行)|エクセル入門(2023-11-17)
画像「セルに配置」のVBAについて(365の新機能)|VBA技術解説(2023-11-13)
スピルのゴーストの範囲を選択するVBA|ツイッター出題回答 (2023-10-31)
エクセル試験3:月間の所定労働時間|エクセル練習問題(2023-10-04)
エクセル試験2:所得税の計算|エクセル練習問題(2023-10-04)
エクセル試験1:曜日別の平均客単価|エクセル練習問題(2023-10-04)
列全体を指定する時のRangeとColumnsの違い|ツイッター出題回答 (2023-09-24)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.繰り返し処理(For Next)|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.条件分岐(IF)|VBA入門
7.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
8.並べ替え(Sort)|VBA入門
9.マクロとは?VBAとは?VBAでできること|VBA入門
10.Range以外の指定方法(Cells,Rows,Columns)|VBA入門




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


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



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