Office関連

スライドマスターのフォントを一括変更するPowerPointマクロ

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

エラーの処理は手抜きですが、これならばフォントを自由に選択できるので、使い勝手が良くなったのではないかと思います。

ちなみに、フォントの取得部分の処理は下記記事のコードを流用しています。

関連記事

  1. Office関連

    Trello APIを使ってカードを投稿するVBAマクロ

    以前Fiddlerを使ってTrello APIを実行する記事を書きまし…

  2. Office関連

    指定したセル範囲をUTF-8やEUC-JP等のテキストファイルとして出力するExcelアドイン

    以前この記事で、指定したセル範囲をUTF-8やEUC-JP等のテキスト…

  3. Office関連

    指定したセル範囲をUTF-8やEUC-JP等のテキストファイルとして出力するExcelマクロ

    ExcelファイルをUTF-8のテキストファイルで出力する必要があった…

  4. Office関連

    VBE用のCOMアドインをメモ帳で作ってみる。

    “Officeアプリケーション用のCOMアドインをVisual Stu…

  5. Office アドイン

    [Office用アプリ]アプリ開発コンテストの案内

    2013/9/9 追記:コンテストの受賞者が発表されました。おかげ…

コメント

  • コメント (0)

  • トラックバックは利用できません。

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

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP