Microsoft Word マクロ

振り替え休日の今日一日,misima を Microsoft Word から操作するための方式について考えていた。Word で選択した文字列をマクロによって旧仮名・旧字に変換し,置き換える工夫である。

オライリー・ジャパンから発行されている Andrew Savikas 著『WORD HACKS』(2005年7月刊) ですでにヒントを得ていた方法を試してみた。Word マクロから Perl スクリプトを起動し,クリップボード経由で取得した文字列を変換して,再びクリップボードに書いて,Word 原稿の選択文字列を置換する技が掲載されている。これを応用して Perl スクリプトから misima SOAP サーバに処理要求を発行して,戻りテキストを貼付ければよいわけである。

久しぶりに X40 の Windows XP を起動して,Word 2003 のマクロをコーディングする。全く VBA の文法に疎いのだけれども,『WORD HACKS』の例をよく読めば理解できる範囲でマクロができた。一方,Perl プログラムは Win32::Clipboard を取込んで,クリップボードテキストを操作するテストコードを書いた。

試験してみると,Word に貼付けたプログラム出力が文字化けしてしまう。いろいろ調べた結果,Win32::Clipboard で取得したテキストは Unicode でなく SJIS のようである。なにかエンコーディングを指定する手だてがないか探したが見あたらない。

Java AWT パッケージの datatransfer API という手段を考えるか。VBA, InfoPath XML ベースの正攻法でいくか。もうしばらく思案が必要である。

Word Hacks―プロが教える文書活用テクニック
アンドリュー サビカス Andrew Savikas, 日向 あおい[訳]
オライリージャパン (2005/07)

(11.2 付記:misima Word 2003 クライアントは結局 Microsoft Office XP Web Services Toolkit 2.0 を使ってしごく簡易にできた。10.8 記事『misima Microsoft Word クライアント』を参照。)