『ExcelマクロユーザーのためのPowerPoint VBA入門講座』というセミナーの準備を進めています。
その内容を検討するにあたり、これまで『ビジネスパーソンのためのExcelマクロ入門講座』『Excelマクロ入門講座 オブジェクト式解説編』を受講いただいた方に、PowerPointでどんな処理を行うときにマクロを使えたら便利と感じるのか、というアンケートを採らせていただきました。
その結果、フォントをまとめて変更する際にPowerPointマクロを使えたら良さそう、といったご要望を複数の方からいただきました。
フォントの置換ダイアログの限界
PowerPointでは、[ホーム]タブ-[編集]グループ-[置換]-[フォントの置換]から表示できる、下図のような[フォントの置換]ダイアログを使って、
フォントを変更することもできます。
ですが、実務ではさまざまなプレゼンテーションファイルからスライドをかき集めて、新たなプレゼン資料を作成することもあります。そのような場合に[フォントの置換]ダイアログでフォントを変更するというのは、確かに面倒です。
フォントを一括変更するサンプルマクロ
以下のようなマクロで、アクティブなプレゼンテーションファイルの全スライドの、プレースホルダーを除くShapeを、定数・FNT_NAMEに指定したフォントに一気に変更することができます。
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
サンプルマクロの解説
アクティブなプレゼンテーションファイルの全スライドに対する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マクロ