次の方法で共有


Office Space: 段落にドロップ キャップを追加する

Office Space

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

段落にドロップ キャップを追加する

多くの方から「Scripting Guy になるにはどうすればよいのですか」という問い合わせが寄せられます。はっきり言って、それは簡単ではありません。Scripting Guy への道は医者を目指す場合とよく似ています。ただ、医者になる場合とは異なり、猛勉強をし、難しい国家試験に合格し、自らの仕事に自覚を持つ必要はありません。それ以外の点はよく似ています。

しかし、本当に Scripting Guy になることを夢見ている方のために、1 つ秘訣をお教えしましょう。何かをすると決めたら、最後までやり抜くことです (実際には、限界に挑む努力が必要です)。データをテキスト ファイルに保存するだけであれば、Scripting Guys としては、まず第一に Microsoft Word を使用しないことをお勧めします。普通のテキスト ファイルを作成する場合は、FileSystemObject を使用した方がはるかに簡単だからです。しかし、どうしても Microsoft Word を使用するというのであれば、Scripting Guys としてまず言いたいことは、Word の書式設定機能を最大限に活用する必要があるということです。さまざまなフォントを使用し、そこかしこに色をちりばめ、グラフィックを 1 つ 2 つ挿入する必要があります。さらに、ある種の格調を持たせるために、所々でドロップ キャップを使用することも検討してください。

そうです。ドロップ キャップです。ドロップ キャップが何のことかわからないという方は、下のスクリーンショットにある大きな "H" の文字を見てください。

ドロップ キャップ

この文書は意味のない文章が並んでいるだけですが、レイアウトは印象的だと思いませんか。特に重要な点は、スクリプトを使用して簡単にドロップ キャップを文書に追加できることです。今回は、その方法について説明します (ついでに Word の表示モードを変更する方法も説明します)。

早速、スクリプトを見てみましょう。

Const wdPrintView = 3

Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Add()
Set objView = objDoc.ActiveWindow.View
objView.Type = wdPrintView
objWord.Visible = True

Set objSelection = objWord.Selection

strText = "Here is the first sentence in my paragraph. "
strText = strText & "Here is the second sentence in my paragraph. "
strText = strText & "Here is the third sentence in my paragraph. "
strText = strText & "Here is the fourth sentence in my paragraph. "
strText = strText & "Here is the fifth sentence in my paragraph. "
strText = strText & "Here is the sixth sentence in my paragraph. "
strText = strText & "Here is the seventh sentence in my paragraph. "

objSelection.TypeText strText
objSelection.TypeParagraph()
objSelection.TypeParagraph()
objSelection.TypeText strText

objDoc.Paragraphs(1).DropCap.Enable
objDoc.Paragraphs(1).DropCap.LinesToDrop = 3

まず、定数 wdPrintView を定義しています。この定数は文書の表示方法を印刷レイアウトに設定するために使用します。なぜそのようなことをするのでしょうか。それは、印刷レイアウトでなければドロップ キャップを表示することはできないからです。下書き表示では、ドロップ キャップが追加されていても正しく表示されず、次のような状態になります。

ドロップ キャップ

他の表示方法を表す定数 (および値) を次の表に示します。

表示方法

定数

下書き

wdNormalView

1

Web レイアウト

wdWebView

6

印刷レイアウト

wdPrintView

3

閲覧レイアウト

wdReadingView

7

アウトライン

wdOutlineView

2

次に、Word.Application オブジェクトのインスタンスを作成し、新しい文書を追加します。Visible を True に設定する (新しい文書が表示されるようにします) 前に View オブジェクトのインスタンスを作成して表示方法を印刷レイアウトに設定している (先ほど定義した定数 wdPrintView を使用します) ことに注意してください。この処理を実行するコードを次に示します。

Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Add()
Set objView = objDoc.ActiveWindow.View
objView.Type = wdPrintView
objWord.Visible = True

では、この文書を閲覧レイアウトで表示する場合はどうするかというと、wdReadingView という定数 (値は 7) を定義し、該当するコード行を次のように変更します。

objView.Type = wdReadingView

文書が開いた状態で、Word の Selection オブジェクトのインスタンスを作成し、変数 strText に複数の文章を割り当てます。これは、単に段落をそれらしく見せるためです (そうしたとしても、段落とは言い難いかもしれませんが)。最後に、TypeText メソッドを使用して段落のテキストを入力し、2 つの TypeParagraph メソッドを使用して空白行を入力します (TypeParagraph の呼び出しはキーボードの Enter キーを押すことに相当します)。そして、これは遊びに過ぎませんが、TypeText メソッドで第 2 段落のテキストを入力します。これによって 2 つの段落が作成されますが、どちらにもドロップ キャップは追加されていません。

そこで、いよいよその作業に着手します。まず段落 1 にドロップ キャップを追加します。必要なコードは、次の 2 行だけです。

objDoc.Paragraphs(1).DropCap.Enable
objDoc.Paragraphs(1).DropCap.LinesToDrop = 3

最初の行では、Enable メソッドを呼び出し、段落 1 の先頭文字をドロップ キャップとして設定しています。次に、LinesToDrop プロパティの値を設定してドロップ キャップのサイズを指定します。値 3 はドロップ キャップを 3 行分の高さにすることを意味します。必要な設定はこれだけです。

もちろん、もっと凝ったものにするのであれば、FontName プロパティに別のフォントを割り当て、ドロップ キャップのフォントを変更することもできます。たとえば、次のように設定します。

objDoc.Paragraphs(1).DropCap.FontName = "Script MT Bold"

これによって、文書は次のようになります。

ドロップ キャップ

ドロップ キャップとその後のテキストとの間隔を含め、ドロップ キャップの位置を変更することもできます。詳細については、MSDN に掲載されている「Microsoft Word VBA Language Reference」(英語) を参照してください。