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

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

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

【アイカツフレンズ!】ベストフレンズ認定会(ピュアパレット)に参加しました。前のページ

[Google Apps Script]Microsoft Graph APIを使ってMicrosoftのサービスと連携する方法次のページ

関連記事

  1. アイコン一覧

    Office 365アイコン(imageMso)一覧(P)

    Office 365のデスクトップ版Officeアプリケーション(Wo…

  2. Office関連

    組み込み定数を列挙するVBAマクロ

    定数の名前や値を調べたい、そんなときはTypeLib Informat…

  3. Office関連

    Office 365 Soloをインストールしてみました。

    2014年10月17日、Microsoftの新しいOffice製品「O…

  4. Office関連

    [Excel Services ECMAScript]アクティブなシート名を取得する。

    埋め込んだExcelワークブックのアクティブなシート名を取得するコード…

  5. Office関連

    [リボン・カスタマイズ]カスタムタブを共有する。

    ※ 2015/2/18 コードに一部誤りがあったので修正しました。…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP