次の方法で共有


Office Space: Micorosft Word 文書にテキストを追加する

Office Space

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

Microsoft Word 文書にテキストを追加する

少し前、Microsoft Excel ワークシートにデータを追加する方法をご紹介する Office Space コラムを発行しました。そのコラムへの反響は大変大きかったのです。

"Microsoft Word 文書へはどうやってテキストを追加すればいいのですか。"

"これはすばらしい。しかし、私が必要なのは、Word 文書の最後にデータを追加する方法です。"

"Word 文書で同じようなことをする方法はありませんか。"

"親愛なる友へ。私のことをご存知ないかもしれませんが、私はフリードニアの亡き前国防省長官の妻です。私の夫は他界する前、銀行の秘密口座に 5000 万ドル預け、Microsoft Word 文書にテキストを追加する方法があるかどうかを突き止めるように私に言いました。"

わかりましたから、私たちの頭を棒で殴らないでください (多くの人はきっと殴りたいでしょうけれども)。そうですね。たとえば、次のような単純な Word 文書があるとします。

Microsoft Word

この文書を開いて、新しいデータを最後に追加するスクリプトが必要です。そんなスクリプトは存在するかって。ええ。今は存在しています。

Const wdStory = 6
Const wdMove = 0

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

Set objDoc = objWord.Documents.Open("c:\scripts\testdoc.doc")

Set objSelection = objWord.Selection
objSelection.EndKey wdStory, wdMove

objSelection.TypeParagraph()
objSelection.TypeParagraph()
objSelection.TypeText "This text was appended to an existing Word document."

思っていたよりずっと簡単でしょう。スクリプトでは、まず wdStory および wdMove という 2 つの定数を定義します。wdStory は、選択ポイントをどこに移動させるかを Word に指示します (予想どおり、値 6 は "選択ポイントをストーリーの最後 ( "文書の最後" という Word 用語) に移動すること" を意味しています)。wdMove は、選択した部分を実際に移動するようにスクリプトに指示します。つまり、小さな点滅しているカーソルを、文書冒頭の既定の場所から一番最後に移動させます。または、定数 wdExtend を定義し、その値を 1 に設定することもできます。この場合、選択範囲を文書の最初から終わりまで拡張します。つまり、文書全体を選択します。

どなたかからご質問があるような気がしていました。はい、そのとおりです。選択した部分を文書の他の場所に移動 (または拡張) することができます。移動できるのは、文書の最後だけではありません。次のような場所にも移動することができます。

定数

wdSentence

3

wdParagraph

4

wdLine

5

wdStory

6

詳細については、MSDN の Microsoft Word に関する「VBA Language Reference」(英語) を参照してください。

本題に戻りましょう。2 つの定数を定義した後で、Word.Application オブジェクトのインスタンスを作成し、Visible プロパティを True に設定します (これによって、画面上ですべてを表示することができます)。Open メソッドを使用して、ファイル C:\Scripts\Testdoc.doc を開き、Selection オブジェクトのインスタンスを作成します。既定では、これによって選択ポイントが文書の冒頭に配置されます。

しかし、選択ポイントを文書の最後に移動させたいんですよね (どのみち、追加するテキストは選択ポイントがある場所に追加されるのです)。選択ポイントを文書の最後に移動させるには、EndKey メソッドを使用します。名前が示すように、キーボードの End キーをエミュレートしているのです。以下は、選択ポイントを文書の最後に移動するコード行です。

objSelection.EndKey wdStory, wdMove

おわかりのように、EndKey に 2 つのパラメータを渡します。wdStory は、選択ポイントを文書の最後に移動するようにスクリプトに指示し、wdMove は、選択ポイントを移動するのであって、選択範囲を拡張するのではないことを明確にします。EndKey メソッドを呼び出した後は、小さな点滅しているカーソルは、文書の最初ではなく最後に移動しています。

: 代わりに Home キーをエミュレートする場合はどうでしょうか。ご推察のとおりです。HomeKey メソッドを使用します。

コードの残りは、私たちが実際に文書の最後に移動したことを示すだけです。TypeParagraph() メソッドを使用して (新規テキストと元のテキストを分離するために) 2、3 の復帰改行を文書に追加し、次のコード行を使用してファイルにテキストを追加します。

objSelection.TypeText "This text was appended to an existing Word document."

そして信じられないことに、Word 文書は次のようになります。新しいテキストが元のテキストの最後に付加されています。

Microsoft Word

これでおわかりでしょう。これが、Microsoft Word 文書にテキストを追加する方法です。やっとのことで、みんなゆったり座ってくつろぐことができますね。

何ですって。新しいスライドを PowerPoint プレゼンテーションに追加する方法はどうかって?