PowerPoint VBAで選択しているシェイプのフォントを変更するマクロの作り方


shape-range-font

photo credit: Philippe Put word house selegie via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

PowerPoint VBAで選択している部分を操作するマクロの作り方をお伝えしています。

前回の記事はコチラ。

PowerPoint VBAで選択しているシェイプを操作するShapeRangeオブジェクト
PowerPoint VBAで選択している部分を操作するマクロの作り方についてお伝えしています。今回は、選択しているシェイプ範囲を操作するShapeRangeオブジェクトとその使い方について紹介をします。

選択しているシェイプを表すShapeRangeオブジェクトについて紹介しました。

今回は、そのShapeRangeのフォントを変更していきましょう。

PowerPoint VBAで選択しているシェイプのフォントを変更するマクロの作り方です。

行ってみましょう!

スポンサーリンク

前回のおさらい

では、まず前回のおさらいから。

紹介したコードはこちらでした。

Sub 選択したシェイプの取得()

With ActiveWindow.Selection
    If .Type >= ppSelectionShapes Then
        Debug.Print "選択シェイプ数: " & .ShapeRange.Count
        .ShapeRange.Duplicate
    End If
End With

End Sub

4行目で、シェイプが選択されているかを判定、そして選択されていればそのシェイプの数をイミディエイトウィンドウに出力しつつ、選択シェイプ全てを複製するというものでした。

今回は、このプロシージャを修正して、選択しているシェイプのフォントを変更するマクロを作っていきます。

選択したシェイプのフォントを変更するプロシージャ

選択したフォントの変更をするプロシージャを作ってみましょう。

まず、インデックスを用いてFor文でループを回すパターンです。

Sub 選択したシェイプのフォントを変更()

With ActiveWindow.Selection
    If .Type >= ppSelectionShapes Then
    
        Dim i As Long
        For i = 1 To .ShapeRange.Count
            With .ShapeRange(i).TextFrame.TextRange.Font
                .Name = "Meiryo UI"
                .NameFarEast = "Meiryo UI"
                .Color = RGB(89, 89, 89)
            End With
        Next i
    
    End If
End With

End Sub

SlideRangeのときより簡単ですね。

ShapeRangeからインデックスでシェイプを取り出す

7行目~13行目で、選択しているシェイプについてループをしています。

シェイプ範囲に含まれるシェイプには1から順番にインデックスが振られていまして、以下書式でShapeオブジェクトとして取り出すことができます。

ShapeRangeオブジェクト(インデックス)

ループの回数は、Countプロパティで取得したシェイプの数までとすればOKです。

選択されている各シェイプのフォントを設定する

これで、選択されているShapeオブジェクトを一つずつ取り出すことができますので、そのFontオブジェクトを設定していけば良いですね。

詳細は以下の記事をご覧ください。

PowerPoint VBAでシェイプのフォント設定をする色々なプロパティまとめ
PowerPoint VBA入門編ということで、図形やテキストボックスのフォントを変更するマクロの作り方をお伝えしています。今回は、テキストのフォントを変更するいろいろなプロパティまとめをお伝えします。

実行結果

以下のように、シェイプを選択しているとしましょう。

PowerPointでシェイプを選択

この状態で前述のプロシージャを実行すると、以下のようになります。

PowerPoint VBAでシェイプ範囲のフォントを変更

別解:ShapeRangeオブジェクトについてFor Each文でループを回す

ShapeRangeオブジェクトも、SlideRangeオブジェクトと同様に、For Each文によりループを回すことができます。

以下コードでも前述のコードと同様の結果を得ることができます。

Sub 選択したシェイプのフォントを変更2()

With ActiveWindow.Selection
    If .Type >= ppSelectionShapes Then
    
        Dim shp As Shape
        For Each shp In .ShapeRange
            With shp.TextFrame.TextRange.Font
                .Name = "Meiryo UI"
                .NameFarEast = "Meiryo UI"
                .Color = RGB(89, 89, 89)
            End With
        Next shp
    
    End If
End With

End Sub

処理の順番にこだわらなければ、こちらのほうがわかりやすいかも知れませんね。

まとめ

以上、PowerPoint VBAで選択しているシェイプのフォントを変更するマクロの作り方を紹介しました。

ちょちょっと選択して、フォントを一気に変更!ということができますね。

どうぞご活用ください。

次回ですが、「選択しているテキスト」についてお伝えしますよ。

PowerPoint VBAで選択しているテキスト範囲のフォントを変更するマクロの作り方
PowerPoint VBAで選択した部分のフォントを変更するマクロの作り方をお伝えしています。今回は、選択しているテキスト範囲の取得方法、およびフォントを変更するマクロの作り方について紹介していきます。

どうぞお楽しみに!

連載目次:初心者向けPowerPoint VBAで選択箇所を操作する

PowerPointでプレゼンテーションを作っている際に、「選択している部分のフォントを好きに変えたい!」ということありますよね。そのニーズに応えるマクロの作り方をシリーズでお伝えしていきます。
  1. PowerPoint VBAでアクティブなウィンドウを取得する方法
  2. PowerPoint VBAで選択した部分を表すSelectionオブジェクトとその取得
  3. PowerPoint VBAのSelectionオブジェクトの4つのタイプについて理解しよう!
  4. PowerPoint VBAで選択しているスライドを操作するSlideRangeオブジェクト
  5. PowerPoint VBAで選択しているスライドのフォントを変更するマクロの作り方
  6. PowerPoint VBAで選択しているシェイプを操作するShapeRangeオブジェクト
  7. PowerPoint VBAで選択しているシェイプのフォントを変更するマクロの作り方
  8. PowerPoint VBAで選択しているテキスト範囲のフォントを変更するマクロの作り方
  9. PowerPoint VBAで選択した部分を判別してそのフォントを変更するマクロ
  10. PowerPoint VBAでフォームボタンからマクロを実行する方法

タイトルとURLをコピーしました