Word文書で不要なスタイルを非表示にする

スタイルの一覧には必要なスタイルだけを表示してすっきりさせるマクロです。文書内で使われていない段落スタイルや文字スタイルを検出して、非表示化します。

組み込みスタイル、ユーザー定義のスタイルのどちらにも対応します。

スタイル非表示マクロ

不使用スタイルを検出して非表示を設定するマクロ

Sub 不使用スタイルを非表示()

    Dim oSty As Style

    For Each oSty In ActiveDocument.Styles
        Select Case oSty.Type
        Case wdStyleTypeParagraph, wdStyleTypeParagraphOnly, wdStyleTypeCharacter
            If Not (oSty.Visibility) Then
                With ActiveDocument.Content.Find
                    .ClearFormatting
                    .Style = oSty
                    .Execute FindText:="", Format:=True
                    If .Found = False Then
                        If MsgBox(oSty.NameLocal & "を非表示にしますか?", _
                                  vbYesNo + vbQuestion, _
                                  "不使用スタイルの検出") = vbYes Then
                            '使用するまで表示しない(常に表示しない場合はFalse)
                            oSty.UnhideWhenUsed = True
                            '表示をオフにする
                            oSty.Visibility = True
                        End If
                    End If
                End With
            End If
        End Select
    Next oSty
    ActiveDocument.FormattingShowFilter = wdShowFilterFormattingRecommended
     
    Set oSty = Nothing
End Sub

補足と解説

マクロの基本構造は以下のトピックと共通です。

StyleObject.UnhideWhenUsedプロパティ、StyleObject.Visibilityプロパティ

[スタイルの管理]ダイアログボックスの[推奨]タブで「表示する」「使用するまで表示しない」「表示しない」を選択する操作に対応します。

Visibility UnhideWhenUsed
表示する False False
使用するまで表示しない True True
表示しない True False
Visibility=Falseで「表示する」なのに違和感があるのですが…
Document.FormattingShowFilterプロパティ

スタイル ウィンドウ オプションの[表示するスタイル]を選択する操作に対応します。このマクロでの表示/非表示設定が有効な「推奨されたスタイル」に対応する wdShowFilterFormattingRecommended を指定します。

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