次の方法で共有


Office Space: Microsoft Word で箇条書きを作成する

Office Space

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

Microsoft Word で箇条書きを作成する

世界中の人々を悩ませているのは、自分たちが遺す足跡です。たとえば、今から 1,000 年後に人々は Microsoft をどのように思い出すでしょう。次のような感想が多いのではないでしょうか。

  • 箇条書きの考案者ではない。

  • しかし、箇条書きを普及させた。

  • PowerPoint と Word の箇条書きは良かった (または悪かった)。

箇条書きと言えば、Microsoft には箇条書きで会話する人もいるそうです。 ** しばしばジョークの種にされる箇条書きですが、重要な情報を分割してわかりやすくするという重要な役割も果たしています。Microsoft Word でレポートを作成するとき、重要な情報は分割してわかりやすくしたいと思うのではないでしょうか。そこで、今日のコラムのテーマは、Microsoft Word で箇条書きを作成するスクリプトの使い方です。

次のスクリプトをご覧ください。

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

Set objSelection = objWord.Selection

objSelection.TypeText "Here is a bulleted list."
objSelection.TypeParagraph()

Set objRange = objDoc.Paragraphs(2).Range
objRange.ListFormat.ApplyBulletDefault

objSelection.TypeText "Item 1"
objSelection.TypeParagraph()
objSelection.TypeText "Item 2"
objSelection.TypeParagraph()
objSelection.TypeText "Item 3"
objSelection.TypeParagraph()
objSelection.TypeText "Item 4"
objSelection.TypeParagraph()
objSelection.TypeText "Item 5"
objSelection.TypeParagraph()

Set objRange = objDoc.Paragraphs(7).Range
objRange.Style = "Normal"

objSelection.TypeText "No longer in a bulleted list."

箇条書きを作成するには、まず、Word.Application オブジェクトのインスタンスを作成します。次に、Visible プロパティを True に設定します。画面上で動作を確認した方がよいでしょう。Add メソッドで新しい文書を追加し、その文書の冒頭で Selection オブジェクトのインスタンスを作成します。

設定が終わったら、1 つの文を入力し、段落改行を行います。そのためには、次の 2 行のコードを使用します。

objSelection.TypeText "Here is a bulleted list."
objSelection.TypeParagraph()

これで、文書の第 2 段落を始める準備ができました。これは箇条書きの開始でもあります。

任意の範囲のテキストを箇条書きに変換するには、ListFormat プロパティを参照して ApplyBulletDefault メソッドを呼び出すだけです。ここでは箇条書きを 2 段落目から始めるので、次のコード行を使用して、2 段落目から始まる新しい範囲を作成します。

Set objRange = objDoc.Paragraphs(2).Range

Range オブジェクト (objRange のオブジェクト参照) を使用するので、1 行のコードで箇条書きの書式を適用できます。

objRange.ListFormat.ApplyBulletDefault

これで入力を開始します。最初の箇条書き項目である Item 1 を追加し、段落改行を入力します。その処理は次のコード部分で行われます。

objSelection.TypeText "Item 1"
objSelection.TypeParagraph()

次に、同様のコードで Item 2 ~ 5 を追加します。項目を箇条書きに追加する処理は、スクリプトの場合と Word で箇条書きを入力する場合とでほとんど同じです。ここでは、箇条書きを Word で作成するとします。最初の項目を入力し、Enter キーを押します。画面は次のようになります。

Microsoft Word

箇条書きの書式は既定で次の段落に引き継がれるので、Item 2 を入力して箇条書きスタイルを適用し、Item 3 を入力して箇条書きスタイルを適用し...という処理は不要です。その代わりに、Enter キーを押すたびに、段落が自動的に箇条書きの一部になります。

スクリプトの場合も同様です。箇条書きの書式は 2 段落目のみに適用します。それ以降の段落は、この書式を自動的に継承します。実際は、箇条書きの書式を削除しない限り、すべての段落が箇条書きになります。その処理は次のコード部分で行われます。

Set objRange = objDoc.Paragraphs(7).Range
objRange.Style = "Normal"

このスクリプトでは、7 段落目を処理しています (例ではこの値をハードコーディングしていますが、現在の段落を追跡するカウンタを実装することもできます。その具体例については、Office Space のコラム「段落の背景色を変更する」を参照してください)。 ** そこで、7 段落目で構成される新しい範囲を作成し、Style プロパティを Normal に設定します。これで段落の書式設定がリセットされ、次に入力するコードは箇条書きの一部ではなくなります。 **

注 : ApplyBulletDefault を呼び出さずに、最初に段落の Style を箇条書きに設定できるのではないかと思われるでしょう。可能ですが、問題は、箇条書きのスタイル名はテンプレート間で同一であるとは限らないということです。しかし、すべてのテンプレートに Normal スタイルがあり、ApplyBulletDefault メソッドはすべてのテンプレートで同じ機能を果たすので、これは汎用的な解決策であると考えられます。

このスクリプトを実行すると、Word 文書は次のようになります。

Microsoft Word

これで Microsoft を思い出してください。