【Word VBA】段落の後に同じアウトラインレベルの段落を挿入するWordマクロ

2017年1月24日

アウトライナー用のマクロです。

アウトライナーについては、記事「Wordをアウトライナーとして使う!」をご覧ください。

アウトライナーを使って文章を作成しているときに、次の段落に別のアイディア、項目、キーワードを挿入する場合があります。

このときに、現在文章を書いている段落と同じ段落スタイル(アウトラインレベル)で次の段落を挿入できると便利です。

さっそく作ってみました。

このマクロでできること

カーソルのある段落の次の段落に新しい段落を挿入します。

そのとき、挿入される段落には、カーソルのある段落と同じスタイルが設定されます。

(実行前)

アウトライン

(実行後)

アウトライン

マクロの解説

複数段落をまたいで選択している場合には、最終段落をRangeオブジェクトで取得しています。

最終段落は、Paragraphs.Lastプロパティで取得できます。(9行目)

14行目でカーソル位置の段落スタイルを取得しています。

23行目で挿入した段落に取得した段落スタイルを設定しています。

25行目のSelectメソッドで、挿入した段落にカーソルを移動させます。

Rangeオブジェクトで操作をしていたのでカーソル移動をともなっていませんでした。カーソル移動をする場合にはRangeオブジェクトSelectすればよいのです。

マクロ


Sub 段落を挿入()

 Dim myRange As Range
 Dim myStyle As Style
 
 '-------------------------------------------
 '選択範囲の最終段落をRangeオブジェクトで取得
 '-------------------------------------------
 Set myRange = Selection.Paragraphs.Last.Range
 
 '-------------------------------------------
 '対象の段落の「段落スタイル」を取得
 '-------------------------------------------
 Set myStyle = myRange.Style
 
 '-------------------------------------------
 '選択範囲の段落の後ろに段落を挿入
 '-------------------------------------------
 With myRange
  .InsertParagraphAfter
  With .Paragraphs.Last.Range
   'スタイルの設定
   .Style = myStyle
   .Collapse wdCollapseStart
   .Select
  End With
 End With
 
 '-------------------------------------------
 'オブジェクト変数の解放
 '-------------------------------------------
 Set myRange = Nothing
 Set myStyle = Nothing
 
End Sub

-コード
-, , ,