エクセル雑感
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だけだったはずですが、シートモジュールまで増えているのも確認できます。
後は、エクスポートして元のファイルでインポートするなり、コードをコピペするなりして回復させてください。



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

プログラミングとは

コンピューター(PC)は、こと計算については天才的な能力を持つが、その他の事については一般人の常識が通用しない子供のような存在です、人間で言うなら、サヴァン症候群でしょう、サヴァン症候群のPCに対して何かをしてもらいたい時に、それを文章で伝えるものがプログラムです。従って、プログラミングでは、あなたの常識は一切通用…
「ネ申Excel」問題 への同意と反論
「ネ申Excel」、私は流行に疎いので、ネ申の意味が最初分からなかった、どうやら、「神Excel」のことのようです、大学教授が書いた、Excelの問題点と解決策の提案がかかれた論文です、この論文に対する、私なりの同意と反論です。Excelを論ずるのに、なぜネ申などという言葉を使ったのか、私には少々理解しがたい部分も…
「Excel3ステップ理論」3階層システムの応用
エクセルでシステムを作成する時に、念頭に置くべき3階層の考え方になります、本来はExcelに限った事ではなく、システム作成では常に3階層を考えて設計しますが、さらに考えを推し進めて3ステップとして考えます、つまり、「Excel3ステップ理論」です。データを入力するシートで、さらに集計し、さらに印刷までやろうとしたら、
「ポケモンを確実に見つける方法」をExcelで数学してみた
ポケモンGO関連の記事をみていたら、【ポケモンGO】かくれているポケモンを確実に見つける方法、という記事を読んだ。普通にそうだなという感想なのですが、もっとまじめに数学したら、もっと良い方法があるのではないかと。元記事はあちこちで見た気がするが、多分これでしょ 「【ポケモンGO】かくれているポケモンを確実に見つける…
エクセルで「もういくつ寝るとお正月」
今日は2020年1月31日です。早いもので1月が終わろうとしています。つまり、2020年も12分の1がすでに終わろうとしています。この調子では、あっという間に今年(2020年)も終わってしまいそうです。
エクセルで連立方程式を解く(MINVERSE,MMULT)
とつぜん連立方程式を解くことになりました。なぜ連立方程式を解くことになったのか、そして、どうやって答えを導き出したのか… これらを自身の覚え書きの意味も含めて記事にしておきます。ただし、行列の難しい説明は抜かして、どうやって解決したかの経緯の説明が中心になります。
VBAが消えてしまった!マクロが壊れて動かない!
スピらない スピル数式 スピらせる
タイトルというのはなかなか難しい。当初思ったお題は、・スピらぬなら壊してしまえスピル数式 ・スピらぬならスピらせてみようスピル数式 ・スピらぬならスピルまで待とうスピル数式 もちろん、壊してしまう訳には行かないし、待っていたってスピルする訳ないし… 当然「スピらぬならスピらせてみようスピル数式」と言う事になる。
難しい数式とは何か?
エクセルでは難しい数式は要らない、𝕏ではそんな話を良く目にします。同じことをするのなら、難しいより簡単な方が良い、それは当たり前ですね。では「難しい」とは何を指しているのでしょうか? 普段良く「数字で語る」みたいなことを言いますが、「難しい」の基準もなくそれを計る尺度も存在しない極めて曖昧な話…
いくつかの数式の計算中にリソース不足になりました。
365のエクセルで最近になって急に出始めたエラーメッセージです。「いくつかの数式の計算中にリソース不足になりました。そのため、これらの数式の値を求められません。」何が原因で出力されるメッセージなのでしょうか… どのような対処をしたら良いのでしょうか… エラーメッセージの詳細 かつて見た覚えのないメッセージです。
無効な前方参照か、コンパイルされていない種類への参照です。
365のエクセルで最近(2023年の後半くらい)になって急に出始めたエラーメッセージです。いくつかのプログ等で対策が書かれているのを見かけましたが、これと言った決め手も無さそうに見受けられました。つまり、書かれている方法で解決した人もいれば解決しない人もいるといった状況に見受けられます。


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

ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|VBA入門
4.ひらがな⇔カタカナの変換|エクセル基本操作
5.繰り返し処理(For Next)|VBA入門
6.変数宣言のDimとデータ型|VBA入門
7.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
8.並べ替え(Sort)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.Findメソッド(Find,FindNext,FindPrevious)|VBA入門




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


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


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