Excel2010を使っています。 xlsmファイル上でVBAを使って、3次元配列を使った計算プログラムを書いていたところ 突然、Excelがクラッシュし強制終了してしまいました。 再度同じxlsmファイルを開こうとしたのですが 同じようにすぐに強制終了してしまう状態にあります。 そのため別の正常に開けるxlsxファイルを開いて 復元されたクラッシュxlsmファイルを開くことを試みました。 復元されたファイルは3つあったのですが、 そのうち二つは開こうとしても強制終了する状態にありました。 一つだけ無事に開くことができました。 しかしユーザーフォームを表示しようとすると http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12128270722 「ActiveXコンポーネントはオブジェクトを作成できません。(実行時エラー'429')」 というエラーメッセージが表示されて開くことができませんでした。 原因を調べたところ、 Private Sub UserForm_Initialize() の中にある ThisWorkbook.path を削除すると開くことができることが分かりました。 しかし、クラッシュした時にはこのあたりのコードは全くいじっていなかったため、 これが原因であるとは考えられません。 どうもMicrosoft Excel Objectsの辺りが以前と違う状態にあることが分かったため、 1日前に保存していたxlsmファイルに標準モジュールなどをコピーすることで問題は解決しました。 ここで質問なのですが、 ・なぜ突然Excelがクラッシュして開くことができなくなったのでしょうか? これまで3年近くこのPCでVBAを使った作業をしていますが、このような事例は初めてです。 特にWindows APIを使うような複雑なコードは使用していません。 ・「ActiveXコンポーネントはオブジェクトを作成できません。(実行時エラー'429')」 というエラーとThisWorkbook.pathはどういう関係があるのでしょうか? ・今回は不幸中の幸いで復帰することができましたが もしもどうやってもxlsmファイルを開くことができない場合には、 xlsmファイルがVBAのbasファイルだけ抽出することはできるのでしょうか? よろしくお願いいたします。
↧