Office Space: Microsoft Office アプリケーションのスクリプト作成に関するヒントとテクニック

Office Space

Office Space へようこそ。Office Space は、Microsoft® Office アプリケーションのスクリプト作成に関するヒントとテクニックを紹介するコラムです。毎週火曜日と木曜日に新しいヒントを掲載します。過去のヒントについては、Office Space アーカイブを参照してください。Microsoft Office でのスクリプト作成について質問がある場合は、scripter@microsoft.com (英語のみ) までお送りください。すべての質問に回答することはできないかもしれませんが、可能な限り対応いたします。

*

Microsoft Word 文書にテーマを適用する

大体において、私たち Scripting Guys は実のところ実力派の集まりです。私たちが主に目指しているのは、読者の皆さんができる限り迅速かつ効果的に仕事を終えるのを手助けする方法を探し出すことです。皆さんは、私たちが紹介するスクリプトに手の込んだエラー処理があまり含まれていなかったり、通常コマンドライン引数を受け取らなかったりすることを疑問に思われていたかもしれませんが、その理由はまさにこの点にあります。決してエラー処理の重要性を軽視しているわけではありません。多くのエラー処理コードが含まれていると、実際にイベント ログのバックアップを作成したり、サービスを停止するといったスクリプトの趣旨がエラー処理コードに紛れてしまう可能性があります。学習という観点からは、スクリプトは単純であるほど優れています。

つまり、学問の世界では、データをコマンド ウィンドウにエコー出力する必要最低限のスクリプトが最高のスクリプトです。しかし、現実は必ずしもそういうわけにはいきません。現実には、レポートを生成する必要があるだけでなく、専門家風の人目を引くレポートを生成する必要があります (皆さんもご存知のとおり、本というものは多くの場合、その表紙で判断されます)。そのため、Scripting Guys はいつもこの相反するテーマを両立させる方法を探し求めています。

そうです。専門家風のレポートやドキュメントを迅速かつ容易に作成する方法を探し求めているのです。

今回、この専門家風のレポートやドキュメントを迅速かつ容易に作成する、非常に "優れた" 方法を見つけました。それは、Microsoft Word 文書にテーマを適用することです。もうお分かりのように、ほとんど努力をしなくても、次のようにあまりパッとしない文書を作成できます。

Microsoft Word


もう少し努力すれば、次のようにやや注目度の高い文書にできます。

Microsoft Word


このために必要なのは、次のようなスクリプトだけです。

Const wdStyleHeading1 = -2
Const wdStyleNormal = -1

Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Add()

objDoc.ApplyTheme "water 111"

Set objSelection = objWord.Selection

i = 1

objDoc.Paragraphs(i).Range.Select
objSelection.ParagraphFormat.Style = wdStyleHeading1
objSelection.TypeText "This is the Title Line"
objSelection.TypeParagraph()
i = i + 1

objDoc.Paragraphs(i).Range.Select
objSelection.ParagraphFormat.Style = wdStyleNormal
objSelection.TypeText "This is the first paragraph."
objSelection.TypeParagraph()

まず、wdStyleHeading1 と wdStyleNormal という 1 組の定数を定義することから始めます。この定数を使用して、文書の段落にスタイルを適用します。ご存知のように、これら 2 つ以外にもたくさんのスタイルを使用できます。詳細については、Microsoft Word VBA 言語リファレンスの「wdBuiltInStyle のマニュアル」(英語) を参照してください。

次に、Word.Application オブジェクトのインスタンスを作成し、Visible プロパティに True を設定します。これにより Microsoft Word のインスタンスが画面上に表示されます。Add() メソッドを呼び出して、新しい空白の文書を追加します。

続いて、次の 1 行のコードを使用して、新しい文書にテーマを適用します。

objDoc.ApplyTheme "water 111"

テーマを適用するには、次の 2 つのパラメータを指定して、まさにぴったりの名前の ApplyTheme メソッドを呼び出します。1 つは適用するテーマの名前 (water) で、もう 1 つはアクティブにするテーマの書式設定オプションを示す省略可能な値 (111) です。この 3 桁の数値は、左から順番に[テーマ] ダイアログ ボックスの [鮮明な色]、[アクティブ グラフィックス]、[背景のイメージ] の各チェック ボックスに対応します。該当する桁が 1 の場合はそのオプションが有効になり、0 の場合は無効になります。この値を省略すると、既定値の 011 が使用され、[鮮明な色] が無効になり、[アクティブ グラフィックス] と [背景のイメージ] が有効になります。

なぜ、テーマに “water” (湖) という名前を付けたかわかりますよね。Word を開き、[書式] メニューの [テーマ] をクリックすると、コンピュータにインストールされたテーマが次のように表示されます。

Microsoft Word


ApplyTheme メソッドを呼び出すと、Word 文書は次のようになります。

Microsoft Word


非常にかっこいいですね。スクリプトの残りの部分では、単にタイトル行とサンプルの段落を入力しています。その結果、このテーマが設定された文書では、次のようにテキストが表示されます。これを行うには、Word の Selection オブジェクトのインスタンスを作成し、i という名前のカウンタ変数に値 1 を代入します。ここでは、このカウンタ変数を使用して、作業対象の段落を管理します。たとえば、i が 1 の場合、次のコードでは最初の段落で構成される Range オブジェクトが作成され、定数 wdStyleHeading1 を使用して見出し 1 にスタイルが設定されます。

objDoc.Paragraphs(i).Range.Select
objSelection.ParagraphFormat.Style = wdStyleHeading1

いくつかテキスト入力し、段落を終了して、段落 2 にプロセス全体を繰り返し、その段落に Normal スタイル (wdStyleNormal) が割り当てられます。これらのプロセスをすべて終了すると、文書は次のようになります。

Microsoft Word


専門家風の注目度の高い文書を、迅速かつ容易に作成しました。私たちは Microsoft の従業員として実際にはそれほど多くの時間を費やしませんでしたが、目的の種類のレポートを作成できました。


ページのトップへページのトップへ