VBAマクロのプログラミングに関する優れた点の1つは、言語がオブジェクト指向であることです。これは、オブジェクトとオブジェクトのコレクションを使用して、ドキュメントのすべての部分にアクセスできることを意味します。つまり、段落を選択しなくても、段落を操作できます。

たとえば、ドキュメントの各段落に順番にアクセスし、その段落のテキストに対して何らかの処理を実行したいとします。

各段落はドキュメント内の個別のオブジェクトであるため、これは比較的簡単です。すべての段落オブジェクトは、Paragraphsコレクションの一部としてアクセスできます。次のコードでうまくいきます:

iParCount = ActiveDocument.Paragraphs.Count For J = 1 To iParCount     sMyPar = ActiveDocument.Paragraphs(J).Range.Text     [Add processing comments to manipulate sMyPar]

ActiveDocument.Paragraphs(J).Range.Text = sMyPar Next J

コードの最初の行は、iParCountを現在のドキュメントの段落数に等しく設定します。次に、2行目から始まるループが、マクロの主要な作業を実行します。 3行目では、sMyPar文字列を指定された段落内のテキストと同じに設定します。 (Jが1に等しい場合、最初の段落で作業しています。Jが2に等しい場合、それは2番目の段落です。以下同様です。)

sMyParの処理が完了すると、次の行でドキュメントテキストがsMyPar文字列の変更されたテキストと等しくなります。

ただし、上記のコードの実行にはかなり長い時間がかかります。次に示すように、ForEachループを使用してParagraphsコレクションにアクセスする方が簡単です。

For Each p In ActiveDocument.Paragraphs     sMyPar = p.Range.Text     [Add processing comments to manipulate sMyPar]

p.Range.Text = sMyPar Next p

処理で変更が必要であることが示された場合にのみ段落を変更すると、コードをさらに高速化できます。

注:

このページ(または_WordTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

link:/ wordribbon-WordTipsMacros [ここをクリックして、新しいブラウザタブでその特別なページを開きます]

_WordTips_は、費用効果の高いMicrosoftWordトレーニングのソースです。

(Microsoft Wordは、世界で最も人気のあるワードプロセッシングソフトウェアです。)このヒント(12177)は、Microsoft Word 2007、2010、2013、および2016に適用されます。Wordの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。

link:/ word-Accessing_Paragraphs_in_a_Macro [マクロ内の段落へのアクセス]