PPT VBAでスライドタイトルの左上位置を取得する

動作検証バージョン:Windows版PowerPoint(バージョン1901 ビルド11231.20174)

「パワポ スライドタイトル左上位置取得 VBA」

という検索キーワードでのアクセスに気付きました。

詳細は不明ですが、スライドタイトルの左上の位置を取得するPowerPoint VBAのコードを探していらしたのでしょう。

いつものようにシンプルなSubプロシージャをご紹介しておきます。

"PPT-2021-5-8 294-1" 

スライドタイトルの左上位置を取得するサンプルマクロ

以下のSubプロシージャを実行すると、アクティブプレゼンテーション先頭スライドの、スライドタイトル左上の位置が、メッセージボックスに表示されます。

Sub スライドタイトルの左上位置を取得する()

 With ActivePresentation.Slides(1).Shapes

  If .HasTitle Then

   MsgBox _

     "左 : " & .Title.Left & vbCrLf & _

     "上 : " & .Title.Top

  End If

 End With

End Sub

Shapes.Titleでスライドタイトルを表すShapeを取得できる

Shapesコレクションに用意されているTitleプロパティを使うと、

"PPT-2021-5-8 294-2" 

スライドのタイトルプレースホルダーを表すShapeオブジェクトを取得できます。

  With ActivePresentation.Slides(1).Shapes

    MsgBox _

      "左 : " & .Title.Left & vbCrLf & _

      "上 : " & .Title.Top

スライドのタイトルプレースホルダーなので、SlideオブジェクトがTitleプロパティ持っていると誤解してしまう方がいるかもしれませんが、SlideオブジェクトではなくSlideオブジェクトの子であるShapesコレクションにTitleプロパティは用意されています。

タイトルプレースホルダーも所詮はShapeオブジェクトですから、位置を表すLeftプロパティやTopプロパティを持っています。

Shapes.HasTitleでスライドタイトルが存在するかを判定

タイトルプレースホルダーがないスライドでShapes.Titleが評価されると実行時エラーが発生してしまうので、ShapesコレクションのHasTitleプロパティで、

"PPT-2021-5-8 294-3" 

スライドタイトルが存在するかを事前に判定しています。

  With ActivePresentation.Slides(1).Shapes

   If .HasTitle Then