Office 2008より前のバージョンでは、Visual Basic for Applications(VBA)マクロを使用することで、繰り返し作業を自動化したり、Microsoft Wordにまったく新しい機能を追加したりできました。残念ながら、Word 2008はVBAをサポートしていません。代わりに、MicrosoftはAppleScriptとAutomatorの使用を推奨しています。朗報なのは、少し調整するだけで、以前のバージョンのWordでVBAマクロで実行できたほぼすべての機能を、Word 2008のAppleScriptで実行できるということです。
悪いニュースもあります。まず、Office 2008は、かつてVBAでサポートされていたAppleScriptの記録をサポートしていません。つまり、AppleScriptは手動でコーディングする必要があります。次に、AppleScriptをツールバーのボタンに関連付けることはできません(ただし、メニューに配置してキーボードショートカットを割り当てることは可能です)。そして3つ目に、AppleScriptをWord文書に埋め込むことはできません(VBAマクロなら可能です)。つまり、作成したスクリプトを他の人に使ってもらいたい場合は、文書と一緒にスクリプトファイルも送信する必要があります。
Word 2008でAppleScriptを使って何ができるかの例として、以下のスクリプトを作成しました。これらのスクリプトはWordの基本的な問題を解決します。また、以前のバージョンのWordでVBAを使って作成したマクロを再現するものもあります。
これらのスクリプトを使用するには、スクリプトエディタ(/Applications/AppleScript 内)に入力し、Script というファイル形式で Microsoft User Data/Word Script Menu Items フォルダに保存してください。(デフォルトでは、ユーザー名/Documents フォルダに保存されます。)または、自分で入力したくない場合は、ダウンロードして同じフォルダにコピーすることもできます。いずれの方法でも、スクリプトは Word のスクリプトメニュー(ヘルプメニューのすぐ右、S のアイコンで表示されます)に表示されます。
編集者注:雑誌記事ではJoe Kissell氏によるWord 2008用AppleScriptを全て紹介しきれなかったため、この記事ではさらに3つを追加しました。これらのスクリプトはすべて、同封のダウンロードファイルに含まれています。
プレーンテキストを貼り付ける
ほとんどのワードプロセッサには、「貼り付け」の代替コマンド(「プレーンテキスト貼り付け」または「貼り付けてスタイルを合わせる」と呼ばれるもの)があり、コピーまたは切り取ったテキストの元の書式設定を削除することで、貼り付け時に貼り付け先のテキストのスタイルが適用されます。Wordでこれを行うには、テキストをコピーまたは切り取った後、「編集」→「形式を選択して貼り付け」を選択し、「書式なしテキスト」を選択して「OK」をクリックします。「形式を選択して貼り付け」にショートカットを割り当てることはできますが、手順全体にショートカットを割り当てることはできません。

Word 2008で、キー操作1つで、しかもサードパーティ製のソフトウェアをインストールせずに、これを実行できる方法が欲しかったのです(多くのユーティリティでこれを行うことができます)。Microsoftのウェブサイトでは、プレーンテキストとして貼り付けるスクリプトが1つ紹介されています。これは非常にシンプルに見えますが、問題があります。スクリプト実行時に挿入ポイントが文書の末尾にない場合、Wordは挿入ポイントを貼り付けたテキストの後ではなく、前に残してしまうのです。これは、テキストを貼り付ける際に通常期待される後の位置です。
そこで、独自のスクリプトを作成しました(下記の「コードボックス」を参照)。このスクリプトはクリップボードの内容を実際に貼り付けるのではなく、type textコマンドを使って入力をシミュレートします。この方法では、貼り付けたテキストの末尾に挿入ポイントが配置されます。これは、期待通りの位置です。このスクリプトはテキストのみで動作します。クリップボードにグラフィックのみが含まれている場合、スクリプトは何も行いません。クリップボードにテキストとその他の要素が含まれている場合、スクリプトはテキストのみを挿入します。
HTMLタグで囲む
Wordは生のHTMLコードを編集するのに最適なツールではありません。しかし、文書にHTMLを挿入する必要がある場合があります。テキストを選択してこのスクリプト(下記の「コードボックス」を参照)を実行すると、そのテキストが<a>(アンカー)タグで囲まれ、さらに引用符の間に挿入ポイントが移動されるので、テキストのリンク先のURLを入力または貼り付けることができます。(このスクリプトを簡単に変更して、異なるHTMLタグを挿入することもできます。)
この線は、set newPoint to (selection start + 9)挿入ポイントの新しい位置を決定します。(挿入ポイントをテキスト文字列内の 9 文字の後に配置します<a href="。) この線はset selection start to newPoint、実際に挿入ポイントを移動します。
テキストを整理する
WebブラウザやメールからコピーしたテキストをWord文書に貼り付けると、すべての行末に改行が入り、場合によっては余分なスペースが入ることがあります。このスクリプト(下記の「コードボックス」を参照)は、余分な改行とスペースを削除することで、このようなテキストをクリーンアップします。改行が2つ連続している場合は段落区切り、改行が1つだけの場合はスペースとして扱われます。クリーンアップしたいテキスト範囲を選択し、このスクリプトを実行してください。
このスクリプトは、一連の検索と置換コマンドで構成されています。最初のコマンドは、すべての二重改行(実際の段落区切り)をプレースホルダー文字に置き換えます。ここでは段落記号(¶; オプション-7)を使用しましたが、テキスト内に既に存在しない限り、任意のダミー文字を使用できます。2番目のコマンドは、残りのすべての改行をスペースに置き換えます。3番目のコマンドは、プレースホルダー文字を単一の改行に置き換えます。4番目のコマンドは、すべての空白(任意の数のスペースとタブ)を単一のスペースに置き換えます。5番目のコマンドは、改行の後の余分なスペースを削除します。
AppleScriptにキーボードショートカットを割り当てる
Word 2008 の [スクリプト] メニューに AppleScript「マクロ」が追加されました。次に、マクロにキーボード ショートカットを割り当てる簡単な方法を 2 つ紹介します。
システム環境設定システム環境設定の「キーボードとマウス」パネルに移動し、「キーボードショートカット」をクリックします。ウィンドウ下部のプラス記号(+)ボタンをクリックします。ポップアップメニューから「Microsoft Word」を選択します(場合によっては「その他」を選択し、ディスク上の場所を探す必要があります)。次に、「メニュータイトル」フィールドに、スクリプト名を大文字と小文字を含め、表示されているとおりに正確に入力します(例:Paste Plain Text)。「キーボードショートカット」フィールドをクリックし、ショートカットとして使用したいキー(複数可)を押して、「追加」をクリックします。
スクリプト名スクリプトエディタでスクリプトを保存するときに、スクリプト名の末尾にいくつかの文字を追加することで、スクリプトに直接キーボードショートカットを組み込むことができます。名前の直後(間にスペースを入れずに)にs(後に続くのがショートカットであることを示す)を追加し、次に 1 つ以上の修飾キー(mコマンドキーの場合は 、cコントロールキーの場合は 、および/またはoオプションキーの場合は )、最後に 1 つの文字を追加します。大文字またはその他のシフト文字を入力すると、ショートカットにシフトキーが含まれます。たとえば、smVは command-shift-V 、scohは control-option-H になります。
最後に
WordでAppleScriptを使う方法について詳しくは、MicrosoftのOffice Developersページをご覧ください。526ページのPDFファイル「Microsoft Word 2004 AppleScriptリファレンス」(大部分はWord 2008にも適用されます)をダウンロードできます。VBAに慣れている方は、無料のPDFファイル「MacTech's Guide to Making the Transition from VBA to AppleScript」もダウンロードすることをお勧めします。
コードボックス
プレーンテキストを貼り付け
tell application "Microsoft Word"tell selectiontryset theClip to Unicode text of (クリップボードに記録される)type text text theClipend tryend tellend tell
HTMLタグで囲む
tell application "Microsoft Word"tell selectionset newPoint to (selection start + 9)set myString to "<a href="">" & content of text object & "</a>"set content of text object to myStringset selection start to newPointend tellend tell
テキストのクリーンアップ
tell application "Microsoft Word"set findRange to find object of selectiontell findRangeexecute find テキスト "^p^p" を検索し、"¶" で置き換え、置き換え、すべて置換execute find テキスト "^p" を検索し、" " で置き換え、置き換え、すべて置換execute find テキスト "¶" を検索し、"^p" で置き換え、置き換え、すべて置換execute find テキスト "^w" を検索し、" " で置き換え、置き換え、すべて置換execute find テキスト "^p^w" を検索し、"^p" で置き換え、置き換え、すべて置換end tellend tell
[ Joe Kissell は TidBits の上級編集者であり、Mac OS X に関する多数の電子書籍の著者です。]