本記事では、エクセル (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
すると、全てのフォントが指定のフォントに一括変更されていることが分かります。
フォントが一括変更できない場合のトラブルシューティング
今回ご紹介したExcelのフォントを一括変更するマクロ (VBA) が実行できない場合や、テキストボックスやグラフなどのシェイプにフォント変更が反映できない場合は、こちらのよくあるトラブルとその解決方法をご確認ください。
- Qマクロ (VBA) が実行できないのはなぜですか?
- A
マクロが無効化されているかVBAを実行できていない可能性があります。
[オプション] → [トラストセンター] → [トラストセンターの設定] から [マクロの設定] を選び、[すべてのマクロを有効にする (推奨されません、潜在的に危険なコードが実行される可能性があります) ] を選択してください。それでも解決しない場合は、ビジュアルディタ上で F5 ではなく、上部の実行ボタンをクリックするようにしてみてください。
- Qフォントの変更が一部のシートやセルにしか反映されないのはなぜですか?
- A
使用されている範囲外のセルや、特定の条件下でプロパティが適用されないオブジェクトがあるかもしれません。コードでは
UsedRange
を対象にしているため、それ以外のセルは対象外になります。全範囲に適用したい場合は、コードを変更する必要があります。また、セルが保護されているか、読み取り専用モードで開かれている可能性があります。セルの保護を解除するか、ブックの読み取り専用設定を確認してください。
- Qシェイプやチャートのフォントが変更されないのはなぜですか?
- A
シェイプやチャートの特定のプロパティに対してフォントの変更が正しく適用されていない可能性があります。シェイプにテキストが含まれていない場合や、チャートの特定の部分にフォント設定が適用されていない場合があります。
おわりに
以上が、エクセル (Excel) で複数のフォントを一括変更し、指定のフォントを設定する方法のご紹介となります。
ご質問やご不明点がある場合はお気軽にコメントお待ちしております。
ご精読いただきありがとうございました。
コメント