エクセルで異常 VBAのPGを取り出せない

このQ&Aのポイント
  • Excel 2010で互換モードでxlsファイルを使っていたのですが、xlsmに変更してVBAの更なる自動化を図っていました。
  • そのファイルを書いている最中、別件で、共有ファイルを開く仕事が入って、開いた途端、応答なしになり、強制終了せざるを得なくなりました。
  • そのファイルは、VSSに張り付いていたxlsを加工していますので、別途保存していませんし、ファイルが大きいので自動保存もしていませんでした。
回答を見る
  • ベストアンサー

エクセルで異常 VBAのPGを取り出せない

お世話になります。 Excel 2010で互換モードでxlsファイルを使っていたのですが、xlsmに変更してVBAの更なる自動化を図っていました。 そのファイルを書いている最中、別件で、共有ファイルを開く仕事が入って、開いた途端、応答なしになり、強制終了せざるを得なくなりました。 何回もxlsmのファイルを起動しようとしたのですが、開けず、かなり書いたプログラムを読むことができません。 そのファイルは、VSSに張り付いていたxlsを加工していますので、別途保存していませんし、ファイルが大きいので自動保存もしていませんでした。 xlsのファイルから作り直しでしょうか? よろしくお願いします。 P.S.会社のファイルなので社外に持ち出すことができません。 来週以降にならないといじることはできないセキュリティシステムになっています。

質問者が選んだベストアンサー

  • ベストアンサー
noname#212058
noname#212058
回答No.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 コードは救出できているでしょうか…?

oasis701s
質問者

お礼

ありがとう御座います。 救済に成功しました。 感謝です。

その他の回答 (1)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

あまり回答になっていませんが、 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 以上、ご参考まで。

oasis701s
質問者

お礼

ありがとう御座います。

関連するQ&A

  • Excel97VBA

    Excel97のVBAでマクロを作っています。 1.xlsというファイルを、2.prn(スペース区切りテキスト)で保存し、再度1.xlsというファイルで元のファイルに上書き保存したいのですが、1というファイル名を任意に変更したいので、保存形式とファイル名を元のファイルと同じにして元のファイルに上書きする、ということは可能でしょうか?

  • EXCEL VBA

    1月から3月までの12シートからなる複数のファイルがあります。 そのファイルを上書き保存したときに書式と値だけをコピーした「ファイル名+シート名」で別ファイルに保存をかけたいのです。 (例) 営業課月次.xlsの4月シートに入力をして、上書き保存をかけた時点で月次4月.xlsにシート名=営業課月次4月で書式と値だけ保存する。 こんな都合のよいVBAがありましたら教えていただきたいと思います。宜しくお願いします。 (VBAに関しては入門編ぐらいの知識しかありません。)

  • エクセルVBAについて

    エクセルVBAの名前を付けて保存について質問です。 名前を付けて保存するとき、保存先に同じ名前のファイルがあると 「この場所に○○というファイルがありますが置き換えますか?」 と表示され「いいえ」もしくは「キャンセル」を選択すると実行時 エラーが表示されます。 キャンセルしてもエラーが出ないような構文を書きたいのですが わかりません。 もし知っている方がいるようでしたら教えてください。 Dim MySavePath As String MySavePath = Application.GetSaveAsFilename(Date, "Excel ファイル (*.xls), *.xls") If MySavePath <> "False" Then ThisWorkbook.SaveAs MySavePath & ".xls" End If

  • エクセルファイルの保存形式

    拡張子がxlsは97~2003のファイル形式だと思いますが、 xlsmは現行の形式という認識であっていますか? そうなら、xlsm形式でほぞんしたほうがいいのでしょうか? また、2010を使っていますが、何年後には使えなくなるとか互換性が完璧でないとかなる可能性はありますか? マクロも使っています。

  • エクセルVBAを保存時に消したい

    はじめて質問させて頂きます。 エクセルのVBAを覚え始めたばかりの物ですが、 見積書式を作成し、見積番号をVBAでファイルOPEN時に自動挿入し 名前を付けて保存する時はその見積番号が保存する時にファイル名に なるようにVBAを作成しました。 見積番号の呼び出し方法は 指定フォルダにある(.xls)ファイルの数+1としています。 ここで質問なのですが現状だと保存したファイルにはVBAが存在するので そのファイルの修正をする時マクロの実行の有無を聞いてきます。 実行しないを選べば見積番号は変わらないのですが 間違えて実行してしまうとそのファイルの見積番号が変わってしまいます。。 回避方法として知り合いからアドインファイルにすれば?と言われて 保存形式をxlaにしたのですがエラーが出てしまいました>< Const FPath = "C:\指示書" Sub Auto_Open() 'xlsファイル検索 With Application.FileSearch .NewSearch .Filename = "*.xls" .FileType = msoFileTypeAllFiles .LookIn = FPath .SearchSubFolders = False .Execute Cells(1, 21).Value = .FoundFiles.Count + 1 Cells(1, 21).NumberFormat = "0000" End With End Sub したから4行目のCells(1, 21).Value = .FoundFiles.Count + 1 でエラーが出てしまうようで。。原因がわかりません。 何が原因なのでしょうか?><

  • Excel VBA で困っています。

    Excel VBA で困っています。 下記のプログラムで、「名前を付けて保存」→「キャンセル」 を選択した場合のエラーは回避できたのですが、 「名前を付けて保存」→「保存」→「同じ名前のファイルが既に ありますが置き換えますか?」→「いいえ(またはキャンセル)」 の時にエラーが出てしまいます。 どう直したら良いでしょうか。 よろしくお願いいたします。 Public Sub SaveBook() Dim myBook As Variant '「名前を付けて保存」ダイアログ myBook = Application.GetSaveAsFilename("test.xls", _ "Excelファイル,*.xls", , "Excelブックを保存") 'キャンセル時の処理 If StrConv(myBook, vbUpperCase) = "FALSE" Then Exit Sub 'ブックの保存 ActiveWorkbook.SaveAs Filename:=myBook End Sub

  • プログラムが、エクセルファイルを読み込まない

    エクセルVBAでファイルを読みにいくとファイルがありません。 プログラム側が、拡張子xlsxでデータ側がxlsmになっています。 プログラム側をxlsmにすることは、可能ですか? また、データ側をxls xlsxにすることって可能ですか? それぞれの方法を教えていただきたいです。 また、それぞれのメリット、デメリットを教えていただきたいです。 ※OKWAVEより補足:「富士通FMV」についての質問です。

  • エクセル VBAでこれは難しいですか?

    列 A B C D 行 1 T1 あ 1 2 2 T2 い 4 5 3 T3 う 7 5 分かりにくいかもしれませんが、上記のような表があるとします。ファイル名:AA.xlsとします。 ”行1”の「T1」や「あ」等はファイルにより違うとします。 1つのファイルの1シートにこういった表が改ページにより(ある領域で1,2ページとしている)たくさんあります。 これを必要な行、列をVBAで作成されたボックス?に入力方式で行、列を入力して、入力された例えば"B"列が削除され、その部分は左詰にされ、そのファイルが新しく別のファイル名で例えばAB.xlsが自動的に作成することは可能でしょうか? 手順としては 1 ファイルにより必要、不要な列・行が違うのであらかじめ削除する列・行を確認する。(このファイルをA1.xlsとする) 2 実行したいファイルを参照で(任意のフォルダに進めるよう)読み込めるようにしたVBAを開き、A1.xlsを選択する。 3 削除したい列・行を入力できる窓があり、そこに打ち込む。 4 削除した列・行のスペース分左詰め、上詰めにされたA2.xlsというファイルが同一フォルダ内に作成される。 VBAは全くの初心者で、インターネットで勉強を始めようとしている青二才です。 最終的にはこれ以上のことをしたいですが、まずは最低限これをしたいです。 余談ですが、これができるようになるためにはやはり一から勉強をするしかないのでしょうか? 今したいことがずばり載っている入門書のそのページだけ勉強しても不可能でしょうか? ・PS3のあるゲームのキャラクターの必殺技のコマンドを覚えても、まずPS3をどうやって起動するのか? という考えと一緒でしょうか?

  • EXCELのVBAについて教えて下さい。

    VBA初心者です。 EXCEL操作は今まで何度もやっていて大体のことは分るのですが、この度、仕事の関係でマクロ、VBAを初めて使わなくてはいけなくなりました。早速はじめからつまずいています。どうか私にご教授くださればと思います。 やりたいことというのが、 (1)毎日の仕事として、まず、サーバーにあるデータを集計しcsvファイルとして保存します。 (2)そのcsvファイル(ファイル名:今日落としたファイルなら○○050620.csv)を××.xlsというファイルのワークシートにコピーします。 (3)その集計した表をピボットテーブルでさらに分りやすく分別。 (4)そのピボットテーブルからでてきた数字を××.xlsのSheet1の表のあてはまるところに数字をコピーし貼り付けていきます。 それによってグラフができます。 この操作の流れのうち(2)(3)(4)の部分をマクロニ組んでしまいたいのです。なかなかうまくいかないので良い方法を教えてください。ちなみにcsvファイルは毎日の作業なので年月部分のファイル名が毎日の日付が入ります。

  • EXCEL VBA で終了出来ますか?

    いつもお世話になります。 OfficeXPを使用しています。 EXCELのVBAでファイルを開き、定型処理をさせているのですが、定型処理完了後にEXCELを終了させたいと思っています。しかしEXCELの終了マクロをうまく作ることが出来ません。(終了時のメッセージを出さないようにしたいです) ActiveWorkbook("test.xls").Closeで終了させようとしたのですが、「test.xlsを保存しますか」というメッセージが出てきてしまいます。メッセージを出さずになおかつ保存せずに終了させたいのですが、何方か良い方法を教えて頂けないでしょうか?