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
エラーの処理は手抜きですが、これならばフォントを自由に選択できるので、使い勝手が良くなったのではないかと思います。
ちなみに、フォントの取得部分の処理は下記記事のコードを流用しています。
この記事へのコメントはありません。