PowerPointでスライドを作成中、マスターのフォントをまとめて変更したくなったのですが、手作業でやるには地味に面倒な作業です。
自分でマクロを書こうかとも思ったのですが、検索したら出てきました↓
さすがは伊藤さん!
このマクロで気になったのは“フォント名を決め打ち”しているところ。
面倒くさがり屋な私的には、正しいフォント名を調べるのも、フォントを変えるたびに一々コードを書き換えるのも面倒です。
そこで、一時的にコンボボックス(コマンドバー)を作成して、フォントの一覧から選択できるよう、マクロを改造することにしました。
Option Explicit
Public Sub ExecChangeSlideMasterFonts()
Dim cbo As CommandBarControl
Dim itm As Object
Const CSIDL_FONTS = 20
With Application.CommandBars.Add(Position:=msoBarPopup, Temporary:=True)
Set cbo = .Controls.Add(Type:=msoControlComboBox, Temporary:=True)
With cbo
.Caption = "フォント"
.Text = "メイリオ"
With CreateObject("Shell.Application").Namespace(CSIDL_FONTS)
For Each itm In .Items
cbo.AddItem .GetDetailsOf(itm, 8)
Next
End With
.OnAction = "ChangeSlideMasterFonts"
End With
.ShowPopup
.Delete
End With
End Sub
Public Sub ChangeSlideMasterFonts(Optional ByVal dummy As Long = 0)
'スライドマスターのフォント変更
'https://www.relief.jp/docs/powerpoint-vba-setting-slide-master-fonts.html 参考
Dim shp As PowerPoint.Shape
Dim s As String
On Error Resume Next
s = Application.CommandBars.ActionControl.Text
If Len(Trim(s)) < 1 Then Exit Sub
With ActivePresentation.SlideMaster.Shapes
For Each shp In .Placeholders
With shp.TextFrame2.TextRange.Font
.NameFarEast = s
.Name = s
End With
Next
End With
On Error GoTo 0
MsgBox "処理が終了しました。"
End Sub
エラーの処理は手抜きですが、これならばフォントを自由に選択できるので、使い勝手が良くなったのではないかと思います。
ちなみに、フォントの取得部分の処理は下記記事のコードを流用しています。




















この記事へのコメントはありません。