Wordの自動編集にも : Previous と Next

Wordの編集操作では、編集対象の前や次がどうなっているかがキーになる場面が多くあります。今回紹介するPreviousNext は、それをマクロに反映できるメソッド/プロパティです。

マクロの記録で記述されるコードにはPreviousNext が含まれることはほぼないため、あまりなじみがないかも知れません。それだけに、記録されたマクロに適切な条件判断を加味してアップグレードできるわけです。

Previous と Next の使い方

以下のサンプルは、選択している段落に対して、その前の段落と同じスタイルを設定します。

With Selection.Paragraphs(1)
    .Style = .Previous.Style
End With

対象の単位は、段落(Paragraph)に限りません。表の列、行、セル(ColumnRowCell)、フィールド(Field)、Range など様々な単位を対象にできます。

Unit と Count パラメータ

UnitCount パラメータを使うと、内包または隣接しない対象を取得できます。

'選択範囲の1段落目 > その前の段落
set aPara = Selection.Paragraphs(1).Previous

'選択範囲 > 段落で1個分前
set aPara = Selection.Previous(Unit:=wdParagraph, Count:=1).Paragraphs(1)

'選択範囲 > 次の表(選択範囲内に表がなくてもよい)
Set aTable = Selection.Next(Unit:=wdTable, Count:=1).Tables(1)
状況によっては前や次がない場合もあります。例えば、文書先頭で前の段落を対象にするとエラーになります。On Error Resume Next を加えるなどの対処をしておきましょう。

Findと組み合わせると最強ツールに

Findによる検索とPreviousNext を組み合わせると、可用性がぐっと広がり最強ツールになります。例えば、「見出し 1」を検索してその次の段落を処理する、というようなことが可能になります。

タイトルとURLをコピーしました