「ppt vba 表の中の文字列 取得」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
PowerPoint VBAで、表内の文字列を取得するコードを探している方による検索です。
表内の文字列を2次元配列に格納するサンプルマクロ
この検索だけでは詳細がわかりませんので、表の中の文字列を取得して、2次元配列に格納するマクロをご紹介しておきます。
On Error GoTo ErrHandl
With ActiveWindow.Selection.ShapeRange.Table
Dim r_cnt As Long, c_cnt As Long
r_cnt = .Rows.Count
c_cnt = .Columns.Count
Dim cells() As String
ReDim cells(1 To r_cnt, 1 To c_cnt)
Dim r As Long, c As Long
For r = 1 To r_cnt
For c = 1 To c_cnt
cells(r, c) = _
.Cell(r, c).Shape.TextFrame.TextRange.Text
Next c
Next r
Stop
End With
Exit Sub
ErrHandl:
MsgBox "表を選択してから実行してください。"
PowerPointで表を選択しておいてから、上記のマクロを実行すると配列・cellsに表内の文字列が格納され、Stopステートメントでマクロが一時停止します。
一時停止した状態で、ローカルウィンドウを表示すれば、2次元配列に表内の文字列が格納されていることがご確認いただいけるでしょう。
サンプルマクロの解説
行方向のループの中で
For r = 1 To r_cnt
列方向のループを回して
For c = 1 To c_cnt
配列にデータを格納しています。
cells(r, c) = _
オブジェクト式の階層が深いところが、難点でしょう。
Shapeオブジェクトの
Tableオブジェクトの
Cellオブジェクトの
Shapeオブジェクトの
TextFrameオブジェクトの
TextRangeオブジェクトの
Textプロパティで
表の中のセルの文字列を取得できます。
TextRangeオブジェクトではTextプロパティがデフォルトプロパティなので、
cells(r, c) = _
.Cell(r, c).Shape.TextFrame.TextRange.Text
の部分は「.Text」を省略して、
cells(r, c) = _
.Cell(r, c).Shape.TextFrame.TextRange
としてもOKです。
ExcelのVBAに慣れた方だと「Cells」じゃないのかと思ってしまう方がいらっしゃるかもしれません。が、オブジェクトブラウザーで確認すればわかるとおり、PowerPointの場合はTableオブジェクトのCellメソッドで、
Cellオブジェクトが取得できます。
PowerPointで表のデータを配列に格納するコードをあらためて眺めてみると、Excelの場合2次元配列にデータを格納するのは簡単だなぁと、感心させられます。
最終更新日時:2020-02-12 10:55
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » 表・テーブル » 表内の文字列を2次元配列に格納するPowerPointマクロ