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

2017年1月25日

Wordをアウトライナーとして使うことを想定しています。(参考記事:Wordをアウトライナーとして使う!

アウトライナーでアイディア出しをしたり文章を作成したりする場合、現在の項目の下位概念を挿入したくなることがあります。

「野菜」という項目の場合、具体的な野菜の品目である「レタス」や「トマト」を書き出すということです。

このときに、1段階下位のアウトラインレベルに設定して項目を挿入します。以下のように階層構造ができて整理しやすくなります。

アウトライン

そんなわけで、カーソル位置の段落の下にアウトラインレベルが1段階下位の段落を挿入するマクロを作ってみました。

アウトラインレベルの設定について

カーソル位置の段落のアウトラインレベルの1段階ずつの増減は、以下の部分で設定できます。

アウトラインレベル

ショートカットキーでも設定できます。

レベルを下げる [Tab]
レベルを上げる [Tab]+[Shift]

アウトライン表示の場合、[Tab]キーの役割が変わります。通常のように編集記号のタブを挿入する場合には、[Ctrl]+[Tab]を使います。

なお、以下の記事でも紹介されているように、レベルの増減は他のショートカットキー([Alt]+[Shift]+[→]など)もあります。

しかし、私はこのショートカットキーをカーソル移動に割り当てているので使っていません。

また[Tab]キーもつい押し間違えてしまうので、アウトラインレベルの増減のコマンドを別のショートカットキーに設定して実行しています。

(参考)

アウトラインモードでレベルを変更するショートカットキー(インストラクターのネタ帳)

このマクロでできること

カーソルが置かれている段落の下にアウトラインレベルが1段階下位の段落を挿入します。

カーソルが段落の途中にあっても、実行できます。

(実行前)

アウトラインレベル

(実行後)

アウトラインレベル

マクロの解説

前回の記事「【コード】段落の後に同じアウトラインレベルの段落を挿入するWordマクロ」では、カーソル位置と同じ段落スタイルを、挿入した段落に設定しました。

今回の記事では、カーソル位置の段落スタイルよりも下位の段落スタイルを、挿入した段落に設定します。

なので、考え方としては、前回のマクロにアウトラインレベルを1つ下げる処理を追加したものが今回のマクロです。32行目です。

マクロ


Sub 段落を挿入2()

 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
 
 '-------------------------------------------
 '挿入した段落のアウトラインレベルを下げる
 '-------------------------------------------
 Selection.Paragraphs.OutlineDemote
 
 '-------------------------------------------
 'オブジェクト変数の解放
 '-------------------------------------------
 Set myRange = Nothing
 Set myStyle = Nothing
 
End Sub

-コード
-, , , ,