スタイルの一覧には必要なスタイルだけを表示してすっきりさせるマクロです。文書内で使われていない段落スタイルや文字スタイルを検出して、非表示化します。
組み込みスタイル、ユーザー定義のスタイルのどちらにも対応します。
不使用スタイルを検出して非表示を設定するマクロ
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
を指定します。