Notice: 関数 _load_textdomain_just_in_time が誤って呼び出されました。cocoon ドメインの翻訳の読み込みが早すぎました。これは通常、プラグインまたはテーマの一部のコードが早すぎるタイミングで実行されていることを示しています。翻訳は init アクション以降で読み込む必要があります。 詳しくは WordPress のデバッグをご覧ください。 (このメッセージはバージョン 6.7.0 で追加されました) in /home/xs182025/consulting-campus.site/public_html/wp-includes/functions.php on line 6114
【Excel】ファイル内全てのフォントを一括で変更・設定する方法 | CONSULTING CAMPUS

【Excel】ファイル内全てのフォントを一括で変更・設定する方法

【Excel】ファイル内全てのフォントを一括で変更・設定する方法 VBA
この記事は約11分で読めます。
スポンサーリンク

本記事では、エクセル (Excel) のファイル内で使用されるフォントを一括で変更・統一する方法をご紹介しています。今回はVBA (マクロ) を使用した方法をご紹介していますので、全セル選択して実行しても変更が反映できないグラフやテキストボックスなどのオブジェクトにもフォントの一括変更が反映されるようになっています。

  • エクセルファイル内の全フォントが指定のフォントになるように一括変更したい
  • テキストボックスやグラフ中のフォントも一括変更したい
本記事で実装する処理
スポンサーリンク

結論: Excelでフォントを一括変更する方法

エクセルファイルで全てのシートに対して、セルの値やテキストボックスやグラフなど全てのフォントを一括で変更したい場合は下記のVBA (マクロ) コードを実行してください。マクロの実行方法を含む、エクセルファイル内でのフォントの一括変更に関する詳細な解説については次のセクションをご確認ください。

Sub SetAllFonts()
    ' Written by consulting-campus.site
    Dim ws As Worksheet
    Dim cell As Range
    Dim shp As Shape
    Dim ch As ChartObject
    Dim sr As Series
    Dim fontName As String
    Dim isValidFont As Boolean
    
    ' フォント名の取得と検証
    Do
        fontName = InputBox("設定したいフォント名を入力してください")
        If fontName = "" Then
            MsgBox "キャンセルされました。", vbExclamation
            Exit Sub
        End If
        isValidFont = IsFontAvailable(fontName)
        If Not isValidFont Then
            MsgBox "指定されたフォントはシステムに存在しません: " & fontName, vbCritical
        End If
    Loop Until isValidFont
    
    ' ワークブック内の全てのシートをループ
    For Each ws In ThisWorkbook.Worksheets
        ' シート内の全てのセルをループ
        For Each cell In ws.UsedRange
            ' フォントを設定
            cell.Font.Name = fontName
        Next cell
        
        ' シート内の全てのシェイプをループ
        For Each shp In ws.Shapes
            ' シェイプ内のテキストのフォントを設定
            If shp.HasChart Then
                shp.Chart.ChartArea.Font.Name = fontName
            Else
                With shp.TextFrame2.TextRange.Font
                    .Name = fontName
                    .NameAscii = fontName
                    .NameComplexScript = fontName
                    .NameFarEast = fontName
                    .NameOther = fontName
                End With
            End If
        Next shp
    Next ws
    
    MsgBox "全てのフォントが設定されました。"
End Sub

Function IsFontAvailable(fontName As String) As Boolean
    Dim testCell As Range
    Set testCell = ThisWorkbook.Worksheets(1).Cells(1, 1)
    
    On Error Resume Next
    testCell.Font.Name = fontName
    If Err.Number = 0 Then
        IsFontAvailable = True
    Else
        IsFontAvailable = False
    End If
    On Error GoTo 0
End Function

フォントの一括変更を行うステップの解説

こちらのセクションでは、Excelファイル内の全てのフォントを変更するステップをご紹介してきます。Excelを複数人で使用している際や、他のファイルなどからデータをコピーした際などに、同一ファイル内に複数のフォントが設定されてしまい、フォントを後から一括で変更・統一したい場合があります。そのような場合の対処法としてご確認ください。

複数のフォントが混在するエクセルファイルの確認

まずはじめに、使用するエクセルファイルを確認します。複数フォントが存在する・その可能性があるファイルとして、任意のファイルを開きます。ここでは、各セルやグラフ及びテキストボックスでそれぞれバラバラのフォントが設定されたサンプルを使用しています。

複数のフォントが混在するエクセルファイルの確認

フォントを一括変更するVBA (マクロ) の実行

次に、開いたファイル上でフォントを一括変更するVBA (マクロ) を実行します。Alt + F11 キーを押してビジュアルエディタを開き、[挿入][標準モジュール] より新しいモジュールを開きます。VBAやマクロの実行方法に関するより詳しい解説が必要な方は【丁寧に解説】エクセルでマクロ・VBAを実行する方法をご参考にしてみてください。

ビジュアルエディタを開き、[挿入] → [標準モジュール] より新しいモジュールを開く方法

その後、下記のコードを貼り付けてから、F5キーをクリックしてVBA (マクロ) を実行してください。

Sub SetAllFonts()
    ' Written by consulting-campus.site
    Dim ws As Worksheet
    Dim cell As Range
    Dim shp As Shape
    Dim ch As ChartObject
    Dim sr As Series
    Dim fontName As String
    Dim isValidFont As Boolean
    
    ' フォント名の取得と検証
    Do
        fontName = InputBox("設定したいフォント名を入力してください")
        If fontName = "" Then
            MsgBox "キャンセルされました。", vbExclamation
            Exit Sub
        End If
        isValidFont = IsFontAvailable(fontName)
        If Not isValidFont Then
            MsgBox "指定されたフォントはシステムに存在しません: " & fontName, vbCritical
        End If
    Loop Until isValidFont
    
    ' ワークブック内の全てのシートをループ
    For Each ws In ThisWorkbook.Worksheets
        ' シート内の全てのセルをループ
        For Each cell In ws.UsedRange
            ' フォントを設定
            cell.Font.Name = fontName
        Next cell
        
        ' シート内の全てのシェイプをループ
        For Each shp In ws.Shapes
            ' シェイプ内のテキストのフォントを設定
            If shp.HasChart Then
                shp.Chart.ChartArea.Font.Name = fontName
            Else
                With shp.TextFrame2.TextRange.Font
                    .Name = fontName
                    .NameAscii = fontName
                    .NameComplexScript = fontName
                    .NameFarEast = fontName
                    .NameOther = fontName
                End With
            End If
        Next shp
    Next ws
    
    MsgBox "全てのフォントが設定されました。"
End Sub

Function IsFontAvailable(fontName As String) As Boolean
    Dim testCell As Range
    Set testCell = ThisWorkbook.Worksheets(1).Cells(1, 1)
    
    On Error Resume Next
    testCell.Font.Name = fontName
    If Err.Number = 0 Then
        IsFontAvailable = True
    Else
        IsFontAvailable = False
    End If
    On Error GoTo 0
End Function

すると、全てのフォントが指定のフォントに一括変更されていることが分かります。

フォントを一括変更するVBA (マクロ) の実行
フォントを一括変更するVBA (マクロ) の解説

こちらのコードは主に下記の3ステップから構成されています。もし、興味がある方はコードをご確認いただき、知りたい部分を調べたりコメント欄でご質問したりしてみてください。

  1. まず、ユーザーに設定したいフォント名を入力するように促します。フォント名が空白でない場合、そのフォントがシステムに存在するかを確認します。存在しない場合はエラーメッセージを表示し、再度入力を求めます。この手順をフォント名が有効になるまで繰り返します。
  2. 有効なフォント名が入力されると、現在開いているワークブックのすべてのワークシートに対して処理を開始します。各ワークシートについて、使用されている範囲内のすべてのセルを対象にして、入力されたフォント名に設定します。
  3. 次に、ワークシート内のすべてのシェイプ(テキストボックスや図形、グラフなどセル以外に表示されるもの)に対して処理を行います。もしシェイプがチャートを含んでいる場合は、そのチャートのフォントを設定します。それ以外の場合は、そのシェイプ内のテキストのフォントを入力されたフォント名に設定します。

フォントが一括変更できない場合のトラブルシューティング

今回ご紹介したExcelのフォントを一括変更するマクロ (VBA) が実行できない場合や、テキストボックスやグラフなどのシェイプにフォント変更が反映できない場合は、こちらのよくあるトラブルとその解決方法をご確認ください。

Q
マクロ (VBA) が実行できないのはなぜですか?
A

マクロが無効化されているかVBAを実行できていない可能性があります。

[オプション] → [トラストセンター] → [トラストセンターの設定] から [マクロの設定] を選び、[すべてのマクロを有効にする (推奨されません、潜在的に危険なコードが実行される可能性があります) ] を選択してください。それでも解決しない場合は、ビジュアルディタ上で F5 ではなく、上部の実行ボタンをクリックするようにしてみてください。

Q
フォントの変更が一部のシートやセルにしか反映されないのはなぜですか?
A

使用されている範囲外のセルや、特定の条件下でプロパティが適用されないオブジェクトがあるかもしれません。コードではUsedRangeを対象にしているため、それ以外のセルは対象外になります。全範囲に適用したい場合は、コードを変更する必要があります。また、セルが保護されているか、読み取り専用モードで開かれている可能性があります。セルの保護を解除するか、ブックの読み取り専用設定を確認してください。

Q
シェイプやチャートのフォントが変更されないのはなぜですか?
A

シェイプやチャートの特定のプロパティに対してフォントの変更が正しく適用されていない可能性があります。シェイプにテキストが含まれていない場合や、チャートの特定の部分にフォント設定が適用されていない場合があります。

おわりに

以上が、エクセル (Excel) で複数のフォントを一括変更し、指定のフォントを設定する方法のご紹介となります。

ご質問やご不明点がある場合はお気軽にコメントお待ちしております。

ご精読いただきありがとうございました。

コメント

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