 
           
    
                「指定したフォントが使われているかどうかをチェックする」で紹介しているコードの応用で、プルダウンからフォントを指定して、そのフォントがどこで使われているかをチェックするテンプレートを作成しました(2007以降のリボン対応版はコチラ)。
                
                 プルダウンからフォントを検索するWordテンプレート
                プルダウンからフォントを検索するWordテンプレート
            
                このテンプレート(CheckFont2003.dot)ファイルをWordのスタートアップフォルダにコピーして(スタートアップフォルダを開く際は「Wordのスタートアップフォルダを開く(VBS)」で紹介しているスクリプトが便利です)Wordを起動すると、標準ツールバーにフォントを選択するプルダウンメニューとボタン2つが表示されます。
                
                初回起動時はプルダウン項目がありませんので、隣にある「+」ボタンをクリックして項目を追加してください。
                
                
                
                プルダウンからフォントを選択すると実行確認ダイアログが表示されるので、「はい」ボタンをクリックします。
                
                厳密なチェック確認ダイアログが表示されるので、厳密にフォントをチェックする場合(Symbolフォントのチェック等)は「はい」ボタンをクリックし、そうでない場合は「いいえ」ボタンをクリックしてください(「はい」ボタンをクリックすると、日本語用のフォントや英数字用のフォント等、各フォント設定項目のいずれかにフォントが設定されていたらチェック処理を行います)。
                
                
                
                ハイライト(蛍光ペン)クリアボタンをクリックすると、文書に設定されたハイライト(蛍光ペン)をクリアします。
                
                
                当テンプレートが不要になった場合はWordのスタートアップフォルダからテンプレート(CheckFont2003.dot)ファイルを削除してください。
                テンプレート削除後もフォント選択プルダウンが表示され続ける場合がありますが、その際は全文書対象テンプレート「Normal.dot」を一度削除することで、元の状態に戻すことができます。
            
                Sponsored Links
                
                
            
                このテンプレートで使用しているコードは下記の通りです。
                
                [標準モジュール]
                
                        Option Explicit
                        
                        Private Const CtrlCaption As String = "CheckFont"
                        
                        Private Sub ExecuteChkFont()
                          Dim r As Word.Range
                          Dim mode As Long
                          
                          If Len(Trim$(Application.CommandBars.ActionControl.Text)) < 1 Then Exit Sub
                          If MsgBox("フォントチェックを実行しますか?" & vbCrLf & vbCrLf & _
                                    "※ 1文字ずつチェックするため、ボリュームの多い文書では時間が掛かる場合があります。" & vbCrLf & _
                                    "※ チェックを実行すると現在設定されている「蛍光ペン」が無効化されます。", vbYesNo + vbSystemModal + vbInformation) = vbNo Then Exit Sub
                          If MsgBox("厳密なチェックを行いますか?" & vbCrLf & vbCrLf & _
                                    "※ 厳密なチェックを行うと日本語用のフォントや英数字用のフォント等、各フォント設定項目のいずれかにフォントが設定されていたらハイライト処理を行います。" & vbCrLf & _
                                    "※ Symbolフォントのチェック等に向いています。", _
                                    vbYesNo + vbSystemModal + vbInformation) = vbYes Then
                            mode = 1
                          Else
                            mode = 2
                          End If
                          Application.ScreenUpdating = False
                          ClearHighlight 'ハイライトクリア
                          For Each r In ActiveDocument.Characters
                            If ChkFont(r, Application.CommandBars.ActionControl.Text, mode) Then
                              r.HighlightColorIndex = wdYellow
                            End If
                          Next
                          Selection.HomeKey unit:=wdStory
                          Application.ScreenUpdating = True
                          MsgBox "処理が終了しました。", vbInformation + vbSystemModal
                        End Sub
                        
                        Private Function ChkFont(ByVal rTarget As Word.Range, ByVal sFontName As String, Optional ByVal mode As Long = 1) As Boolean
                          Dim ret As Boolean
                          Dim dlg As Word.Dialog
                          
                          ret = False '初期化
                          rTarget.Select
                          Set dlg = Application.Dialogs(wdDialogFormatFont)
                          Select Case mode
                            Case 1
                              If Selection.Font.Name = sFontName Then
                                ret = True
                              ElseIf Selection.Font.NameAscii = sFontName Then
                                ret = True
                              ElseIf Selection.Font.NameBi = sFontName Then
                                ret = True
                              ElseIf Selection.Font.NameFarEast = sFontName Then
                                ret = True
                              ElseIf Selection.Font.NameOther = sFontName Then
                                ret = True
                              ElseIf dlg.Font = sFontName Then
                                ret = True
                              ElseIf dlg.FontHighAnsi = sFontName Then
                                ret = True
                              ElseIf dlg.FontLowAnsi = sFontName Then
                                ret = True
                              ElseIf dlg.FontNameBi = sFontName Then
                                ret = True
                              ElseIf Application.Dialogs(wdDialogInsertSymbol).Font = sFontName Then
                                ret = True
                              End If
                            Case 2
                              If Selection.Font.Name = sFontName Then
                                ret = True
                              End If
                          End Select
                          Set dlg = Nothing
                          ChkFont = ret
                        End Function
                        
                        Private Sub AddCboItem()
                          Dim cbo As Office.CommandBarComboBox
                          Dim f As Variant
                          
                          On Error Resume Next
                          Set cbo = Application.CommandBars("Standard").Controls(CtrlCaption)
                          If Err.Number <> 0 Then
                            Err.Clear
                            Exit Sub
                          End If
                          On Error GoTo 0
                          cbo.Clear
                          For Each f In Application.FontNames
                            cbo.AddItem f
                          Next
                          ThisDocument.Save
                          Set cbo = Nothing
                        End Sub
                        
                        Private Sub ClearHighlight()
                          ActiveDocument.Content.HighlightColorIndex = wdNoHighlight
                        End Sub