Home » パワーポイントマクロ・PowerPoint VBAの使い方 » TextFrame・TextRange » フォントを一括変更するPowerPointマクロ

フォントを一括変更するPowerPointマクロ

対象:PowerPoint2007, PowerPoint2010, PowerPoint2013, Windows版PowerPoint2016

ExcelマクロユーザーのためのPowerPoint VBA入門講座』というセミナーの準備を進めています。

その内容を検討するにあたり、これまで『ビジネスパーソンのためのExcelマクロ入門講座』『Excelマクロ入門講座 オブジェクト式解説編』を受講いただいた方に、PowerPointでどんな処理を行うときにマクロを使えたら便利と感じるのか、というアンケートを採らせていただきました。

その結果、フォントをまとめて変更する際にPowerPointマクロを使えたら良さそう、といったご要望を複数の方からいただきました。

フォントの置換ダイアログの限界

PowerPointでは、[ホーム]タブ-[編集]グループ-[置換]-[フォントの置換]から表示できる、下図のような[フォントの置換]ダイアログを使って、

フォントをまとめて変更するPowerPointマクロ

フォントを変更することもできます。

ですが、実務ではさまざまなプレゼンテーションファイルからスライドをかき集めて、新たなプレゼン資料を作成することもあります。そのような場合に[フォントの置換]ダイアログでフォントを変更するというのは、確かに面倒です。

[スポンサードリンク]

フォントを一括変更するサンプルマクロ

以下のようなマクロで、アクティブなプレゼンテーションファイルの全スライドの、プレースホルダーを除くShapeを、定数・FNT_NAMEに指定したフォントに一気に変更することができます。

Sub フォントを一括変更する()

 Const FNT_NAME = "HGP明朝B"

 Dim sld As Slide
 Dim shp As Shape

 For Each sld In ActivePresentation.Slides
  For Each shp In sld.Shapes
  With shp

   If .Type <> msoPlaceholder Then
    If .HasTextFrame Then

     With .TextFrame.TextRange.Font
      .Name = FNT_NAME
      .NameFarEast = FNT_NAME
     End With

    End If
   End If

  End With
  Next shp
 Next sld

End Sub

サンプルマクロの解説

アクティブなプレゼンテーションファイルの全スライドに対するFor Each~Nextループの中で、
 For Each sld In ActivePresentation.Slides

各スライド上の全Shapeに対するFor Each~Nextループを回して、
  For Each shp In sld.Shapes

Shapeがプレースホルダーではなく、
  With shp
   If .Type <> msoPlaceholder Then

TextFrameを持っているときに、
    If .HasTextFrame Then

定数・FNT_NAMEに指定しておいたフォントに変更しています。
     With .TextFrame.TextRange.Font
      .Name = FNT_NAME
      .NameFarEast = FNT_NAME

日本語環境の場合は、Font.Nameだけでなく、Font.NameFarEastも変更してやる必要があるのが注意すべき点でしょう。

プレースホルダーのフォントについては、スライドマスターでまとめて変更することもできますから、
   If .Type <> msoPlaceholder Then
と、プレースホルダーでなかった場合という条件分岐を上記のマクロでは入れていますが、プレースホルダーも含めてフォント変更したい場合は、この条件分岐をコメントアウトしてください。

但しその場合、プレースホルダーのフォントについては、マスターとの関連が切れてしまう、ということをご了承ください。

[スポンサードリンク]

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » TextFrame・TextRange » フォントを一括変更するPowerPointマクロ

「TextFrame・TextRange」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.