ここから本文です

エクセルで壊れたファイルを開く際の、VBAの処理について、 現在指定ディレクトリ...

kur********さん

2015/12/1811:09:32

エクセルで壊れたファイルを開く際の、VBAの処理について、
現在指定ディレクトリ内にある、指定ブックの指定シートをコピーし抽出するマクロを生成しています。

---------------------------------------------------
"Excelファイル名" には読み取れない内容が含まれています。
このブックの内容を回復しますか?ブックの発行元が信頼できる場合は、「はい」をクリックしてください。
---------------------------------------------------

手動でExcelファイルを開いた際には、上記のダイアログメッセージが表示され、
「はい」を選択すると、修復結果はどうあれファイルを開くことが可能です。

こちらのファイルをExcelのVBAより、
Workbooks.Open FileName:="ファイルパス/名", UpdateLinks:=0

上記一文で開くと、

---------------------------------------------------
実行時エラー '1004'
'Open'メソッドは失敗しました : 'Workbooks' オブジェクト
---------------------------------------------------

と、表示されております。

▼問題点としましては、
1.壊れたブックが複数・不特定あるため、手動での回復は時間がかかる。
2.壊れるブックに対してのマクロや、処理をあらかじめ設定することは、
私が管理しているxlsxでない為、不可能です。
3.壊れたブックに対してOpenメソッドを実行することで、1004エラーでマクロが停止してしまうこと。


▼解決策としては、
1.VBA側で壊れたブックを開く際、自動で回復に対し、「はい」を選択する処理。
2.壊れたブックを一括で選択し、回復の出来る処理、または外部ツール。
3.壊れたブックを開く際に出るダイアログを、元より「はい」選択。もしくは無視するオプション。

上記対応が私が考え付く対策でして、
可能な限り調べ、実施してみたのですが、一向に解決する気配がなく、
こちらで質問させていただきました。

過去に似た事例や、お心当たり、解決案などお持ちでしたら、
是非ご教示願いたいです。よろしくお願いいたします。

閲覧数:
4,355
回答数:
1
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

sya********さん

2015/12/2021:33:03

1.難しい
2.マイコンピュータで「.xls*」等で検索して全て保存しなおしてみるとか
3.
on error resume next
と書いた行以降ではエラーは全部飛ばせます

質問した人からのコメント

2015/12/22 17:48:56

ご回答ありがとうございます。
頂いた3番を使用させていただきました。

On Error GoTo bfx
Workbooks.Open FileName:=ファイルパス
On Error GoTo 0

Exit Sub
bfx:
Resume Next

bfx~Resume Nextに壊れたブックに対する処理を施してます。
文字数の都合割愛、大変有難う御座いました。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる