みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
PowerPoint VBAで選択している部分を操作するマクロの作り方について解説をしています。
前回の記事はコチラです。
選択しているスライド範囲を表すSlideRangeオブジェクトについて紹介しました。
今回は、選択しているスライド範囲について、そのフォントを変更するマクロの作り方を紹介していきましょう。
PowerPoint VBAで選択しているスライドのフォントを変更するマクロの作り方です。
では、行ってみましょう。
前回のおさらい
前回は以下のようなプロシージャを紹介しました。
Sub 選択したスライドの取得()
With ActiveWindow.Selection
If .Type >= ppSelectionSlides Then
Debug.Print "選択スライド数: " & .SlideRange.Count
.SlideRange.Duplicate
End If
End With
End Sub
4行目でスライドが選択しているかどうかを判定し、選択されていればそのスライドの数をイミディエイトウィンドウに出力しつつ、複製をするというものです。
今回は、選択しているスライド上のシェイプについて、フォントを変更する方法をお伝えしていきます。
選択スライドの全てのフォントの設定を変更するマクロ
選択スライドの全てのフォントの設定をするマクロですが、流れとしては以下のようになります。
- 選択している全てのスライドについて繰り返し
- 現在のスライドに含まれる全てのシェイプについて繰り返し
- フォントの設定をする
- 現在のスライドに含まれる全てのシェイプについて繰り返し
コードとしては以下のようになります。
Sub 選択したスライドのフォントを設定()
With ActiveWindow.Selection
If .Type >= ppSelectionSlides Then
Dim i As Long
For i = 1 To .SlideRange.Count
Dim shp As Shape
For Each shp In .SlideRange(i).Shapes
With shp.TextFrame.TextRange.Font
.Name = "Meiryo UI"
.NameFarEast = "Meiryo UI"
.Color = RGB(89, 89, 89)
End With
Next shp
Next i
End If
End With
End Sub
以下解説をしていきましょう。
SlideRangeからインデックスでスライドを取り出す
7行目~16行目のFor文は「選択している全てのスライドについて」繰り返す部分です。
Countプロパティで含まれるスライドの枚数がわかりますので、その分繰り返しをします。
それで、スライド範囲に含まれるスライドには、1からはじまるインデックスが振られていますので、以下のようにして、インデックスを使って個々のスライドをSlideオブジェクトとして取り出すことができます。
スライドに含まれるシェイプについてフォントを設定する
あとは、各Slideオブジェクトの全てのシェイプについて、フォントを設定していけば良いですね。
シェイプコレクションのループとフォントの設定をしている部分が9行目~15行目になります。
詳細は以下の記事をご参考ください。
実行結果
以下のスライドを選択しているときに上記プロシージャを実行します。
すると、以下のように選択しているスライドのみフォントを変更することができました。
別解:SlideRangeオブジェクトについてFor Each文でループを回す(後日注記)
別解として、SlideRangeオブジェクトはFor Each文でループできるよ!というご指摘をいただきました。
確かに以下のコードにより、ループを回すことができることを確認いたしましたので、追記させていただきます。
Sub 選択したスライドのフォントを設定2()
With ActiveWindow.Selection
If .Type >= ppSelectionSlides Then
Dim sld As Slide
For Each sld In .SlideRange
Dim shp As Shape
For Each shp In sld.Shapes
With shp.TextFrame.TextRange.Font
.Name = "Meiryo UI"
.NameFarEast = "Meiryo UI"
.Color = RGB(89, 89, 89)
End With
Next shp
Next sld
End If
End With
End Sub
「インストラクターのネタ帳」さま、ご指摘ありがとうございました。
まとめ
以上、PowerPoint VBAで選択しているスライドのフォントを変更するマクロの作り方を紹介しました。
これで、特定のスライドだけフォントを変更していくというのが一発でできるようになりますね。
ぜひご活用ください。
さて、次回は「選択しているシェイプ」について紹介していきます。
どうぞお楽しみに!
連載目次:初心者向けPowerPoint VBAで選択箇所を操作する
PowerPointでプレゼンテーションを作っている際に、「選択している部分のフォントを好きに変えたい!」ということありますよね。そのニーズに応えるマクロの作り方をシリーズでお伝えしていきます。- PowerPoint VBAでアクティブなウィンドウを取得する方法
- PowerPoint VBAで選択した部分を表すSelectionオブジェクトとその取得
- PowerPoint VBAのSelectionオブジェクトの4つのタイプについて理解しよう!
- PowerPoint VBAで選択しているスライドを操作するSlideRangeオブジェクト
- PowerPoint VBAで選択しているスライドのフォントを変更するマクロの作り方
- PowerPoint VBAで選択しているシェイプを操作するShapeRangeオブジェクト
- PowerPoint VBAで選択しているシェイプのフォントを変更するマクロの作り方
- PowerPoint VBAで選択しているテキスト範囲のフォントを変更するマクロの作り方
- PowerPoint VBAで選択した部分を判別してそのフォントを変更するマクロ
- PowerPoint VBAでフォームボタンからマクロを実行する方法