壊れたWordファイルからのテキスト救出

一般的な Word のクラッシュ後の対応についてはこちら。

PC: Wordがクラッシュした時のテキスト救出

2014年12月21日

先日卒論提出日にUSBメモリが壊れた学生さんをお助けした話。幸い提出後のトラブル。保存したはずのファイルが消えた。とりあえずUSBのイメージファイルをHDDに保存。DDforWindows。これでいつでも書き戻し可。Recuvaでファイル検索。残念ながらファイルは上書き済。

Recuvaの一覧には2048年など未来のファイルが含まれており確かにヤバげ。時間とファイルサイズからそれらしいものを虱潰しに落とすと、一つがそれっぽい。Wordで修復できないのでdocxをzip解凍。document.xmlをExcelで開き本文救出。

\r\n\r\nを@@@@とかに置き換え改行を取り出し\r\nを削除。のち@@@@を\r\nに置換し本文改行を復元。調査や対応で2時間ほど。原稿締め切りの日に。なんとかなりました。問題のノートが遅いわUACガチガチだわボロボロで苦労しました。書式やレイアウトは消えたけど、なんとか

Wordのファイル、昨今は割りと安定していますが、
稀に壊れることがあります。

Word2003など 拡張子 「.doc」 の間は泣き寝入りでした。
しかし、2007以降の 「.docx」 は、救出できる可能性があります。

「.docx」 の x は XML の X。

「.doc」 はバイナリフォーマットで、やすやすと他のアプリケーションで
読み書きすることはできませんでした。

しかし 「.docx」 は XMLに準拠しており、
「.docx」 は XMLファイルの塊をZIP圧縮したものとなっています。

「.docx」 のファイルが開けない場合に、
ファイルをZIP解凍することができれば、
Word の本文を含むXMLファイルを、拾い出すことができます。

以下、救出の際の手続きを。
幾度か、これで救出したことがあります。

(1)「.docx」 のZIP解凍

開けない 「.docx」 ファイルをZIP解凍します。

まず、拡張子が見えるか、確認して下さい。
見えない方は、以下のように設定を。

フォルダを開いた状態でAltキーを押し、
[ツール]⇒[フォルダオブション]⇒[表示]タブと進み、
「登録されている拡張子は表示しない」のチェックを外して下さい。

開けないWordファイルの拡張子が見えるようになったら、
次は、拡張子を変えます。

「.docx」 を 「.zip」 に変更して下さい。

変更したら、普通のZIPファイルのように、解凍して下さい。
ダブルクリックで開くのでもOKです。

Wordのフォルダの中に、「document.xml」 があります。
コレです。コレの中に、本文があります。

ダブルクリックでブラウザが開き、XMLが表示されます。
確かに、Word に書き込んだ本文が見えてます。

(2)Excelでのテキスト救出

本文のXMLは取り出せましたが、タグが邪魔です。
ExcelでXMLテーブルとして開きます。

一度、上記の「document.xml」をどこかに保存して下さい。
コピペで結構です。
どこかに保存しないと、Excel で開けません。

次に、開いたExcel にドラッグドロップで落とします。
ポトリと。

小さなウィンドウが出てきます。
「XMLテーブルとして開く」 をチェック、OKを押して下さい。
スキーマがどーのこーの出ますが、とりあえずOKです。

出ました!本文があります!
この例では、[ 列F ] にありますね。

ただ、なんだか文が、ブチブチ切れています。

(3)改行の復元

上記の本文の列を、Wordに貼り付けます。
Excel からコピーして、Word の
[形式を選択して貼り付け] から [テキスト] で貼り付けて下さい。

改行が壊れています。
何らかのルールで文が分割されて、
通常の改行は、改行2つに置き換わっています。

しかし、一括置換で簡単に元に戻せます。

置換ウィンドウを開き、「ワイルドカードを使用する」 にチェック。

検索する文字列に 「([!^13])^13」 と入れて、
置換後の文字列に 「\1」 と入れましょう。
バックスラッシュ(\)は、¥記号の半角と同じです。

あとは 「全て置換」 を押しましょう。

はい、できました!
書式は消えてしまいましたが、
本文を無事救出することができました。

以上です。
2007以降は、長いものに巻かれて
.docx で 保存したほうが、良さそうです。

なお .doc が、複雑なバイナリフォーマットであった
理由については、こちら。

VBA を設計した Joel さんが詳しく書いてます。

http://anond.hatelabo.jp/20080227113835