「パワーポイント 特定の文字列 フォント変更 マクロ」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
指定した文字列のフォントだけを変更するPowerPointマクロ・VBA(Visual Basic for Applications)のコードを探している方による検索です。
Wordの場合、[検索と置換]ダイアログを使って、特定の文字列のフォント書式を変更することが可能です。
しかしPowerPointの[置換]ダイアログでは書式の変更を行うことができませんから、
特定の文字列のフォント書式を変更するマクロが欲しいというのはとても納得できます。
文字列を検索してフォントを変更するサンプルマクロ
以下のようなマクロで、文字列を検索してフォントを変更することができます。
Const FIND_TXT = "Contoso.com"
Const FONT_NAME = "Arial Black"
Dim sld As Slide
Dim shp As Shape
Dim rng As TextRange
Dim find_rng As TextRange
For Each sld In ActivePresentation.Slides
For Each shp In sld.Shapes
If shp.HasTextFrame Then
Set rng = shp.TextFrame.TextRange
Set find_rng = rng.Find(FindWhat:=FIND_TXT)
Do Until find_rng Is Nothing
With find_rng
.Font.Name = FONT_NAME
Set find_rng = rng.Find( _
FindWhat:=FIND_TXT, _
After:=.Start + .Length - 1)
End With
Loop
End If
Next
End Sub
上記のマクロを実行すると、アクティブなプレゼンテーションファイル上で「Contoso.com」という文字列を検索して、フォントを「Arial Black」に変更します。
PowerPoint VBA(Visual Basic for Applications)のTextRange.Findメソッドのヘルプに掲載されているコードに、少しだけ手をいれたマクロです。
サンプルマクロの解説
検索する文字列とフォント名は定数で指定するようにしています。
Const FIND_TXT = "Contoso.com"
Const FONT_NAME = "Arial Black"
アクティブなプレゼンテーションファイル上のすべてのSlideにループを回して、
For Each sld In ActivePresentation.Slides
各スライド内のすべてのShapeにループを回し、
For Each shp In sld.Shapes
もしも文字列が含まれていたら、
If shp.HasTextFrame Then
定数・FIND_TXTで指定された文字列を検索します。
Set rng = shp.TextFrame.TextRange
Set find_rng = rng.Find(FindWhat:=FIND_TXT)
文字列が見つからなくなるまでループを回して、
Do Until find_rng Is Nothing
みつかった場合は、定数・FONT_NAMEで指定したフォントに変更してから、
With find_rng
.Font.Name = FONT_NAME
また文字列を探します。
Set find_rng = rng.Find( _
FindWhat:=FIND_TXT, _
After:=.Start + .Length - 1)
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » TextFrame・TextRange » 文字列を検索してフォントを変更するPowerPointマクロ