Microsoft Office文書をOpenXML形式に変換する このエントリをはてなブックマークに追加

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ファイルが入っているよ。

Windowsのコマンド・プロンプトの拡張子の取り扱い このエントリをはてなブックマークに追加

[NT] コマンド プロンプトでの拡張子の取り扱い
http://support.microsoft.com/kb/164351/ja

コマンド プロンプトからワイルドカードを使ってファイル管理を行う場合、3 文字を超える長い拡張子は、3 文字に切り詰められて取り扱われます。

というわけで、上のリンクのガイドに従って、レジストリエディタで
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
Win95TruncatedExtensions : REG_DWORD を 0 へ変更(デフォルトは 1)して、再起動

ところが、もう一度試してみても、やっぱり3 文字に切り詰められて取り扱われるのか、以下のようなコマンドを実行すると、ひっかかって欲しくない拡張子4文字以上のファイルもヒットしてしまう。

> dir /B *.htm
index.htm
index.html

このレジストリ値を変える以前に作ったファイルには効かないようだ。レジストリ変更後に作った拡張子4文字以降のファイルはちゃんとその通り扱われていた。

うっかり削除なんて事故も起きかねない。コマンド・プロンプトでワイルドカードを使うときは十分注意が必要だね。

Google +1ボタンをWordPressに設置する このエントリをはてなブックマークに追加

Google +1 ボタンをWordpressに設置する方法。
+1ボタンとは、字の通りイチオシといったところかな。

Google +1
  Add +1 to your pages to help your site stand out


上のリンク先に行って、SizeとLanguageを選ぶと埋め込みコードができるよ。

Read the rest of this entry »

CaboChaの文字コードRecompileしてもうまくいかない、そんなとき このエントリをはてなブックマークに追加

CaboCha 0.60pre4 Windows版で辞書の文字コードを変えようと思ったのだけどうまくいかなかったときの話
Read the rest of this entry »

Hudson/JenkinsでVisual Studioプロジェクトのビルドをする – MSBuild Plugin このエントリをはてなブックマークに追加

Hudson/JenkinsでVisual Studioのプロジェクトをビルドしたい、そんなとき。
MSBuild Pluginを使うよ。

Read the rest of this entry »

コマンドラインでUTF-8テキストのBOMを追加したり削除したりする このエントリをはてなブックマークに追加

BOM(バイト順マーク)を削除することはよくあるんだけど、つけたことってあまりなかった。
エディタの機能を使えばできるものもあるけど、大量なファイルをいちいちエディタで開いて処理するわけにもいかないので、コマンドでまとめて処理したい、そんなとき。
結論としては、uconvを使えば割と手軽にBOMを付けたり消したりできる。
「BOMのマークの文字なんだったっけ?」とか考えなくてもよい方法

Read the rest of this entry »

Gitプロトコルでリモートリポジトリにアクセス このエントリをはてなブックマークに追加

普段はssh経由でgitを使っているのだけれどhudsonでgit cloneするときにちょっと困ったので、認証の要らないGitプロトコルを使ってみることにしたよ。
Read the rest of this entry »

一度に複数のリモートリポジトリにgit pushする方法 このエントリをはてなブックマークに追加

コマンドひとつで複数のリモートリポジトリにgit pushしたい、そんなとき。
Read the rest of this entry »

Visual Studio C++でCppUnitをビルドできない、そんなとき このエントリをはてなブックマークに追加

CppUnitをWindowsでも使うことになってビルドを試みたのだけれど、結構ハマったので、ビルド方法をメモっておくよ。

Read the rest of this entry »

Hudson Growl Pluginでビルド結果をGrowlへ通知 このエントリをはてなブックマークに追加

Hudsonのビルド結果をGrowlに通知するプラグインGrowl Pluginを試してみたよ。

HudsonGrowl
Read the rest of this entry »