Microsoft Copilotでスライドを自動生成すると、なぜか中国語フォント(MS YaHeiなど)が混入する問題があります。フォントの置換機能では対処できないケースも多く、地味に厄介です。
問題の本質
- Han Unification問題 – AIがロケールを正しく解釈せず、漢字に中国語フォントを割り当てる
- 図形ベースでの描画 – プレースホルダーではなくテキストボックスで生成されるため、スライドマスターでの一括変更が効かない
結果として、GUIでの手作業は非効率的です。数十枚のスライドを手動修正するのは時間の無駄でしかありません。
解決策:全オブジェクト走査でフォントを強制上書き
全スライドの全図形を再帰的に走査し、NameFarEastプロパティを含めて強制的にフォントを書き換えます。
Sub ForceChangeFont()
Dim sld As Slide
Dim shp As Shape
Dim targetFont As String
targetFont = "メイリオ"
On Error Resume Next
For Each sld In ActivePresentation.Slides
For Each shp In sld.Shapes
Call ChangeShapeFont(shp, targetFont)
Next shp
Next sld
MsgBox "完了", vbInformation
End Sub
Sub ChangeShapeFont(shp As Shape, fontName As String)
Dim gShp As Shape
If shp.HasTextFrame Then
If shp.TextFrame.HasText Then
' ここがポイント:3つのプロパティを全て指定
shp.TextFrame.TextRange.Font.Name = fontName
shp.TextFrame.TextRange.Font.NameFarEast = fontName
shp.TextFrame.TextRange.Font.NameAscii = fontName
End If
End If
' グループ化されている場合は再帰処理
If shp.Type = msoGroup Then
For Each gShp In shp.GroupItems
Call ChangeShapeFont(gShp, fontName)
Next gShp
End If
End Sub
重要なのはNameFarEast
通常のFont.Nameだけでは、中国語スクリプト属性が付いたテキストは変更されません。NameFarEastを明示的に指定することで、漢字のレンダリング指定を強制的に上書きできます。
運用方針
AI生成スライドは「完成品」ではなく「たたき台」として扱うのが現実的です。コンテンツの生成はAIに任せ、フォーマットの統一はスクリプトで自動化します。この分業が今のところ最も効率的な使い方です。
標準モジュールに放り込んでおけば、生成後にワンクリックで修正できます。