はるさめ氏の日常

主に弱電とマイコンを扱っています.たまにネットワークやサーバなども.

Office Suite なしで .doc を .docx に変換する

やり方としては少々まわりくどいですが、技術的には十分可能ということが分かったので書き記しておきます。

手順

変換したいファイルを file.doc とします。簡単な手順としては以下の通りです。

  1. file.doc をGoogle Drive にアップロードする
  2. アップロードした file.doc を Google ドキュメントで開く
  3. OpenDocument 形式 .odt で書き出し、ダウンロードする(file.doc.odt とします)
  4. ダウンロードした file.doc.odt を Google Drive にアップロードする
  5. アップロードした file.doc.odt を Google ドキュメントで開く
  6. Microsoft Word 形式 .docx で書き出し、ダウンロードする(file.doc.odt.docx とします)
  7. 必要に応じてリネームする(file.docx とします)

以上の手順で、file.docfile.docx に変換できるようです。なお、私は Office Suite を持っていないので、変換前後でのファイルの整合性までは確認していません。

メモ

Office 2003 以前はファイル形式に独自規格を使用しており、また当時の拡張子は 3 文字だったので .doc / .xls / .ppt ファイルとして扱っていた。
Office 2007 以後、XML ベースの Office Open XML 形式を採用するようになったが、元の .doc / .xls / .ppt ファイルとのバイナリレベルでの互換性がないこともあり、XML ベースである意を込めて .docx / .xlsx / .pptx ファイルとしている。マクロを内蔵しているものは .docm / .xlsm / .pptm
Office Open XML (OpenXML, OOXML) は実体を XML ファイルとして構造化しているため、再利用性が高かったり破損リスクが少なかったりといったメリットがある。また、標準化された規格(ISO/IEC 29500)でもあるため、互換ソフトの安定性も比較的高く、Office Suite 環境でなくとも読み書きが可能。例えば 標準形式に OpenDocument Format を採用している LibreOffice では LibreOffice 3.4 で OOXML に対応した。(やろうと思えば拡張子を .zip に変換した上で展開し、VSCode などで編集することも技術的には可能。やりたくはないけど)
OpenDocument も同様に XML 形式をベースとした標準化規格(ISO/IEC 26300, JIS X 4401)であるため、互換性こそないものの OpenDocument / OpenXML の変換は比較的容易そう(内部構造まで深く調査はしていないため未検証であることに注意)。そのため、中間フォーマットとして適任の可能性が高い。
OpenDocument と OpenXML は完全に対応するものではないため、変換前後で体裁が崩れるなどの不具合が発生する可能性が十分ある点は要注意。当然ながら Office Suite を使って直接変換する方が確実。
OpenXML の ISO 標準化にあたって ODF 推進側といざこざがあったらしいが、正直どうでもいいし規格としてオープンになってくれるならその方が良いじゃないのと思わなくもない。

参考