【Word VBA】表示するアウトラインレベルを設定するWordマクロ

2016年12月5日

先日の記事(【読み物】Wordをアウトライナーとして使う!)にて、Wordをアウトライナーとして使うに至った経緯を紹介しました。

さっそく、アウトライナー用マクロ第1弾を紹介します。

文章を前後するときに、表示レベルを上げればカーソル移動が少なくなってわかりやすいと思ったので、表示するレベルを簡易に変更するマクロを作りました。

Wordでは、アウトライン表示にしたときに[アウトライン]タブの[アウトラインツール]グループにある以下のボタンです。ここでレベルを設定するんですね。

アウトラインレベル

マウスを持って表示レベルをクリックして変更すればいいだけの話なんですが、やっぱりショートカットキーでこういう操作ができるとうれしいのでとりあえずつくったわけです(笑)。

今後使いながら、改良点を探っていこうと思います。

このマクロでできること

表示するアウトラインレベルを設定します。

たとえば、以下のような表示になっているとします。アウトライン表示で、左側に対応するスタイル名を表示しています。Wordでは、アウトラインレベル(1~9)と見出し(1~9)スタイルが対応しています。

アウトラインレベル

マクロを実行すると以下のダイアログボックスが表示されます。

アウトラインレベル

ここで、アウトラインレベルを入力します。デフォルトでは「すべてのレベル」が表示されています。

レベル2まで表示する場合には「2」を入力します。

アウトラインレベル

すると以下のようにレベル3以降がたたまれて非表示になります。

アウトラインレベル

元の表示に戻すときには、このマクロを再度実行して、デフォルトの「すべてのレベル」のまま[OK]ボタンをクリックします。

マクロの解説

Inputboxを用いてユーザーと対話型にしています。

ここの入力値を規制するための仕組みが21行目~35行目に書かれています。

マクロ


Sub OL_レベルの表示()
 
 Dim myNumber As Variant 'レベルの入力
 Dim myMessage As String 'メッセージ
 Dim myTitle As String  'タイトル
 
 '-------------------------------------------
 '表示をアウトラインモードへ変更
 '-------------------------------------------
 If ActiveWindow.View.Type <> wdOutlineView Then
  ActiveWindow.View.Type = wdOutlineView
 End If
 
 '-------------------------------------------
 'レベルの入力
 '-------------------------------------------
 myTitle = "レベルの表示設定"
 myMessage = "レベルを入力してください。" & vbCr _
             & "(半角・全角どちらでも可)"

 Do
   myNumber = InputBox(myMessage, myTitle, "すべてのレベル")
   
   'キャンセルの場合終了
   If myNumber = vbNullString Then
    Exit Sub
   End If
   
   'すべてのレベル(デフォルト)を選択した場合
   If myNumber = "すべてのレベル" Then
    Exit Do
   End If
   
 Loop While IsNumeric(myNumber) = False Or _
       myNumber < 1 Or myNumber > 9
 
 '-------------------------------------------
 'レベルの表示切り替え
 '-------------------------------------------
 If myNumber = "すべてのレベル" Then
  ActiveWindow.View.ShowAllHeadings
 Else
  ActiveWindow.View.ShowHeading CInt(myNumber)
 End If

End Sub

 

-コード
-,