「VBA パワーポイント table.range」
という検索キーワードに気が付きました。
PowerPoint VBAの表でも、セルを表すオブジェクトはRangeだと誤解している、Excel VBAの経験がある方による検索でしょう。
PowerPoint VBAにはRangeという名前のメソッドは存在しますけれど、Rangeオブジェクトは存在しません。PowerPoint VBAで表のセルを表すオブジェクトはCellオブジェクトです。
そして、PowerPoint VBAで表のセルを表すCellは、Excel VBAでセルを表すRangeとは随分と性質が異なるオブジェクトです。
セルの文字列を取得する
アクティブなプレゼンテーションの先頭シートのコンテンツプレースホルダー(2つ目の図形)に表を作成して、1行1列目のセルに文字列を入力して、以下のSubプロシージャを実行してみてください。
Dim cell_1x1 As Cell
Set cell_1x1 = ActivePresentation.Slides(1).Shapes(2).Table.Cell(1, 1)
MsgBox cell_1x1.Shape.TextFrame.TextRange.Text
End Sub
PowerPoint VBAで表のセルを操作するには、最低でもこのSubプロシージャを理解する必要があります。
Table内のオブジェクト構造
既にご紹介しているとおりPowerPoint VBAで表を表すTableオブジェクトは、
Presentation
└ Slide
└ Shape
└ Table
と階層をたどって取得します。
で、セルを表すCellオブジェクトは、TableオブジェクトのCellメソッドで取得します。Excel VBAに慣れている方だとCellsと誤解しがちですがCellです。
上記のプロシージャでは、
Set cell_1x1 = ActivePresentation.Slides(1).Shapes(2).Table.Cell(1, 1)
が、1行目1列目のセルを表すCellオブジェクトを取得しているコードです。
そして、Cellオブジェクトの中には、PowerPoint VBAを活用している方ならおなじみの、Shapeオブジェクトが更に存在しています。ですからセルの文字列は、Cell内のShapeから、TextFrame-TextRange-Textと階層をたどって取得できます。
MsgBox cell_1x1.Shape.TextFrame.TextRange.Text
最終更新日時:2019-08-21 10:17
- Newer:pywin32・win32com.clientを使ってPythonのリスト方式でExcelの最後・右端のシートを取得できるのか
- Older:pywin32・win32com.clientでExcelのセル表示形式を取得する
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » 表・テーブル » PowerPoint VBAでTableのRangeは??