
Office Space へようこそ。Office Space は、Microsoft® Office アプリケーションのスクリプト作成に関するヒントとテクニックを紹介する新しいコラムです。過去のヒントについては、Office Space アーカイブを参照してください。Microsoft Office でのスクリプト作成について質問がある場合は、scripter@microsoft.com (英語のみ) までお送りください。すべての質問に回答することはできないかもしれませんが、可能な限り対応いたします。
正直なところ、これほど多くの人々がスクリプトに惹かれる大きな理由の 1 つは、人は楽をするのが好きだからです。スクリプトがすることは、すべて私たちが自分でもできることです。私たちは、あまりになまけ者なので、または忙しすぎるので、それらのことをしないで済ませようとするのです。代わりに、スクリプトにさせようと考えるのです。処理は実行されますが、私たちが直接手を下す必要はありません。自動芝刈り機のように勝手に片付いたら、私たちの生活は完璧なものになるでしょう。
しかし、まだ完璧とは言えません。そうです。結局のところ、スクリプトを作成するときには必ず多少の手間がかかるのです。たとえば、Microsoft Word スクリプトを使用してレポートの作成を自動化するとします。それはすばらしい考えですが、すべてのレポートに装飾的な会社ロゴと免責事項を挿入する必要がある場合はどうでしょうか。それ自体は面倒な作業ではありませんが、それらのアイテムを挿入して書式設定するコードを作成する必要があります。好むと好まざるとにかかわらず、そのような作業を行わずに済ますことはできません。
もちろん、定型句を使用すれば話は別です。
なぜ定型句かというと、定型句を使用すると、常用文 (頻繁に使用するテキスト) をすばやく簡単に挿入することができます。定型句のすばらしい点は、普通のテキストだけでなく、凝った書式設定を施したテキストも挿入できることです。定型句そのものについては詳しく説明しません。これはあくまでもスクリプトに関するコラムです。とはいえ、ここで少し趣向を凝らしたテキストの例を示しておきます。フォントが工夫されているだけでなくグラフィックも追加されている点に注目してください。

このテキストを定型句エントリとして登録するには、テキストとグラフィックを選択し、[ツール] メニューの [オートコレクトのオプション] をクリックします。[オートコレクト] ダイアログ ボックスの [定型句] タブを開き、定型句の登録名 ("Dr. Scripto" など) を入力して、[追加] をクリックします。これによって、Word を使用しているときには、[オートコレクト] ダイアログ ボックスを開き、Dr. Scripto という定型句を選択し、[挿入] をクリックすると、このユニークなテキストを挿入することができます。
よくできていると思いませんか。しかし、Word を開いていない場合はどうでしょうか。スクリプトを使用して Word ドキュメントを作成する場合も、定型句を挿入できるのでしょうか。
もちろん、それは可能です。まず、Word の Range オブジェクトのインスタンスを作成します。これによって、定型句を挿入するドキュメント内の場所を指定することができます。次に示すコードは、Word.Application オブジェクトのインスタンスを作成し (操作の状況を画面上で確認できるように Visible プロパティを True に設定します)、新しいドキュメントを追加して、そのドキュメントの先頭に Range オブジェクトを作成します。
On Error Resume Next
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Add()
Set objRange = objDoc.Range
次に、挿入する定型句を指定します。定型句エントリは実際にはドキュメント テンプレートに含まれているため、AttachedTemplate プロパティを使用して Template オブジェクトのインスタンスを作成する必要があります。
Set objTemplate = objDoc.AttachedTemplate
Template オブジェクト (AttachedTemplate プロパティに基づくオブジェクト) を作成したら、次のような構文を使用して定型句エントリを指定します。定型句の登録名はかっこ内に示します。
objTemplate.AutoTextEntries("Dr. Scripto")
次に、Insert メソッドを追加し、挿入ポイントとして作成した Range オブジェクトを指定します。ここまでの操作でも、必要なコードは次の 1 行だけです。
objTemplate.AutoTextEntries("Dr. Scripto").Insert objRange
新しいドキュメントを作成して Dr. Scripto という定型句を挿入するスクリプトの全体を次に示します。
On Error Resume Next
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Add()
Set objRange = objDoc.Range
Set objTemplate = objDoc.AttachedTemplate
objTemplate.AutoTextEntries("Dr. Scripto").Insert objRange