Microsoft Office文書(Word,Excel,PowerPoint)をOpenXML形式に変換したい、そんなとき。
要は次のようにしたい。
- Microsoft Word 97-2003 文書「.doc」 → Microsoft Word 文書「.docx」
- Microsoft Excel 97-2003 ワークシート「.xls」→ Microsoft Excel ワークシート「.xlsx」
- Microsoft PowerPoint 97-2003 プレゼンテーション「.ppt」→ Microsoft PowerPoint プレゼンテーション「.pptx」
もちろん、それぞれのソフトウェアを起動して「名前を付けて保存」するときに形式を指定してやればよいのだけれど、
ファイルが大量にあるときにはバッチ的に処理したい。
そこで、
■ Microsoft Office Compatibility Pack for Word, Excel, and PowerPoint File Formats
■ 2007 Microsoft Office System Migration Guidance: Microsoft Office Migration Planning Manager
以上の2つをインストールすればそれができるらしい。
後半のMicrosoft Office Migration Planning Managerを試してみた。
上のリンク先のガイド通りにインストールすると、 C:\ompm\ 以下にいろいろ展開される。
C:\ompm\Tools\ofc.ini の fldrに変換したい文書の入ってるフォルダを指定して実行。
ところがPowerPoint(.ppt)がうまく変換されない。64bitマシンを使っていたせいか、C:\Program Files\Microsoft Office\Office14 に
Wordconv.exeとexcelcnv.exe はあるのに、PowerPointを変換しそうなヤツが見当たらない。
C:\Program Files (x86)\Microsoft Office\Office12 にPPCNVCOM.exeがいました。ついでにここにWordconv.exeとexcelcnv.exeもいた。
というわけで、ofc.exeを使うのをやめて、この3つを直接使うことに決めた。
それでコマンドプロンプトでなんとかしようとしたら、前記事「Windowsのコマンド・プロンプトの拡張子の取り扱い」の罠にはまった。
テキトーにやるとdocとdocx,xlsとxlsx,pptとpptxが区別できなくなったりするので注意。
それぞれの使い方。出力ファイル名の拡張子にはxつけてあげるとよいね。
"C:\Program Files (x86)\Microsoft Office\Office12\Wordconv.exe" -oice -nme input_file output_file "C:\Program Files (x86)\Microsoft Office\Office12\excelcnv.exe" -nme -oice input_file output_file "C:\Program Files (x86)\Microsoft Office\Office12\PPCNVCOM.EXE" -oice input_file output_file
それにしてもこのコマンド群の統一感の無さ。
convだったりcnvだったりCNVCOMだったり。大文字小文字がすべてバラバラだし。
しかもオプションの意味はよくわからんのだが、順番がわりと大事だったりする。excelcnv.exe で -oice -nme って書いても動いてくれないのだ。
PowerPointでは-nme付かないし、いったいどうしてこんなことになちゃうんだろうか。
「こいつら全く別物だぜ!」というアピールなんだろうか。ユーザーはそんなの望んでないよね。
インターフェースの悪い例の良い見本だね。勉強になるね!
ところでこのdocx,xlsx,pptxにしたらサイズが小さくなったのだけど、これって要はzipでXMLファイルが圧縮されているのだね。
docx,xlsx,pptxをそれぞれzipという拡張子に変更して展開すれば、中にXMLファイルが入っているよ。
UNICUS Co., Ltd.
LOWTECH, Inc.