- ベストアンサー
エクセルで異常 VBAのPGを取り出せない
- Excel 2010で互換モードでxlsファイルを使っていたのですが、xlsmに変更してVBAの更なる自動化を図っていました。
- そのファイルを書いている最中、別件で、共有ファイルを開く仕事が入って、開いた途端、応答なしになり、強制終了せざるを得なくなりました。
- そのファイルは、VSSに張り付いていたxlsを加工していますので、別途保存していませんし、ファイルが大きいので自動保存もしていませんでした。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
以下の手順で救出できる可能性があります。 ポイントは問題の EXCEL ファイルから VBA コードのデータを取り出し、別の EXCEL ファイルに移植して開くところです。 1. 問題の EXCEL ファイルの拡張子を zip に変える 2. 1. で拡張子を変えたファイルを右クリックし、[プログラムから開く] →[エクスプローラ]を選択。zip ファイルの中身が表示される。 ※ここで表示が失敗する場合は救出手段はありません…。 3. 2.で開いた画面中の xl フォルダ内にある vbaProject.bin ファイルを、 何処か適当なフォルダに DRAG & DROP。 vbaProject.bin ファイルが取り出せたら、2.で開いた画面は閉じる。 4. 新しい EXCEL ファイルを作り、VBA の入力画面を開いて以下の コードを書きこみ、拡張子 xlsm で保存。 Sub A() End Sub 5. 4.で保存したファイルの拡張子を zip に変える。 6. 5. で拡張子を変えたファイルを右クリックし、[プログラムから開く] →[エクスプローラ]を選択。zip ファイルの中身が表示される。 7. 3. で取り出した vbaProject.bin ファイルを、6. で表示している画面の xl フォルダ内にある vbaProject.bin ファイル上に DRAG & DROP して 上書き。上書きできたら 6. で表示した画面は閉じる。 8. 5. で zip に変更した拡張子を、xlsm に戻す。 9. 8. で拡張子を戻したファイルをEXCELで開く。 さて、VBA コードは救出できているでしょうか…?
その他の回答 (1)
- mitarashi
- ベストアンサー率59% (574/965)
あまり回答になっていませんが、 Book1.xlsmに、標準モジュールを挿入して、お馴染みのコードを入力します。 Sub test() MsgBox "Hello! World" End Sub これを保存して、拡張子に.zipをつけます。Book1.xlsm.zip (xlsx、xlsmファイルの実体は、xlmファイル群の圧縮フォルダーです) ファイルのアイコン上で右クリックして、エクスプローラを選択すると、解凍せずに中味が見られます。(この段階で開けないほど破損しているなら、本回答はExitして下さい。 vbaProject.binというファイルがあり、文字通りバイナリーファイルですが、デスクトップにコピーして、無理矢理メモ帳で開いてみます。 Sub te st() MsgBox " Hello! World nEnd といった箇所がみられます。変に化けていますが、ある程度は読めるかもしれません。 本気で解読するなら、 http://download.microsoft.com/download/2/4/8/24862317-78f0-4c4b-b355-c7b2c1d997db/%5BMS-OVBA%5D.pdf で[MS-OVBA]:Office VBA File Format Structureという、巨大pdfがダウンロードできますので、勉強なさって下さい。(VBAコードを書き直す方が速そうですが) その他のモジュールの場所については、下記リンクをご参照下さい。 http://www.codeproject.com/Articles/15216/Office-bin-file-format 以上、ご参考まで。
お礼
ありがとう御座います。
お礼
ありがとう御座います。 救済に成功しました。 感謝です。