Word 2008でAppleScriptを使ってマクロを作り,ショートカットを割り当てる方法

MS Officeの新しいバージョンには辟易してしまうことが多い。もちろん.docxなど,旧バージョンとの互換性に齟齬をきたしているというのも納得できませんが,それ以外にもイライラすることがたいへん多いです。

まず,Windows版のMS Word 2007はインタフェースが大々的に変わってメニュー構成も変わってしまったので,ちょっとしたことをやろうと思っても,メニューを探し出すだけでもものすごく時間がとられる。最初なんて,「別名で保存」を見つけるだけでも5分も10分もかかってしまい,切れそうになりました。まあ新インターフェースは意欲的だと思うし,ここから入る人には問題ないでしょうが,以前からのバージョンを使っている人間にはストレスが多いです。もうちょっと旧バージョンとのシームレスな移行はできなかったものか。また,がくせいにWordの指導をするときも,旧バージョン用の説明と新バージョン用の説明の両方を用意しなければならず,なぜ自分がMSのためにこんなに手間をとらされなければならないのか,たいへん大きな疑問を感じます。

いっぽう,Mac版のWord 2008は,Win版のWord 2007ほどの大幅な変化はなく,一安心。

しかし動作はえらいもっさりというか重い。Excel 2008も重いし,いい加減にしてほしい。

そして驚くべき事実が発覚。Mac版Office 2008はマクロ機能が省略されている!!!!

ぼくはマクロはそんなに使わないのですが,WordにEmacsキーバインドを仮に実装するためにマクロを使っているんですよ。新しいWordになったので,マクロを記述しなおさないといけないかなと思ってマクロを記録しようとすると,記録する機能がない。なんで?と思ってヘルプを見てみると,Office 2008はこれまでのVisual Basicマクロ機能を廃止したそうで,「代わりにAppleScript使ってくださいねー」などとしゃあしゃあとぬかしています。ぼくはライトユーザーなので被害は小さいですが,マクロを大々的に使っている人には大問題では? しかもAppleScriptはWindowsとの互換性もないし。とんでもないね。

でもまあ文句ばかり言っても仕方ないので,「進んで明かりをつけましょう」的に,AppleScriptでのマクロ記述にトライしてみました。

しかし,「AppleScript使ってくださいね〜」とぬかすわりに,すごい実装が不親切。「スクリプト使うにはXXのフォルダにスクリプトを入れてね」と書いてあるだけで,AppleScriptのスクリプトエディタとも連携してないし,なんなんだこれは。

ちなみに今回やろうとしたのは「Control+D」で「Delete」を実装しようという試み。Wordの「ショートカットキーのユーザー設定」で設定できればいいんだけど,なぜか「一文字削除」のコマンドが用意されてないので,マクロでやらざるを得ない…と思う。→追記参照

やり方は以下の通り。

1. スクリプトエディタに以下のように記述

tell application "Microsoft Word"
delete text object of selection
end tell

2. スクリプトを

  • 「Delete\cD.scpt」という名前で
  • 「書類」>「Microsoftユーザーデータ」>「Word Script Menu Items」に

保存。

ちなみにファイル名に「\cD」を付けるのは,「Control+D」というショートカットキーを割り当てるため。(こんな機能があるなんて初めて知った。ちなみにコマンドキーはm,シフトキーはsだそうで,「コマンド+シフト+L」を割り当てたければ「\csL」と付ければ良いそうです。→参考

これだけ書けば大変簡単ですが,以上のことを探し当てるのに30分以上(もしかしたら1時間近く?)かかりました。ワードのヘルプにも載ってないし,500ページ以上あるWord 2004用のAppleScriptレファレンス(英語)を調べたり,ウェブを検索したり…なんでこんなことをやらなければならないんだ!!!!

たいへん納得いかない思いでいっぱいです。

【追記10/27/2008】Ctrl+Dは上記のようなややこしいことをしなくてもWordコマンドの「EditClear」で一発でした。とほほ…。