Home » パワーポイントマクロ・PowerPoint VBAの使い方 » 表・テーブル » 表内の文字列を2次元配列に格納するPowerPointマクロ

表内の文字列を2次元配列に格納するPowerPointマクロ

対象:PowerPoint2003, PowerPoint2007, PowerPoint2010, PowerPoint2013

表内の文字列を配列に格納するPowerPointマクロ

「ppt vba 表の中の文字列 取得」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

PowerPoint VBAで、表内の文字列を取得するコードを探している方による検索です。

[スポンサードリンク]

表内の文字列を2次元配列に格納するサンプルマクロ

この検索だけでは詳細がわかりませんので、表の中の文字列を取得して、2次元配列に格納するマクロをご紹介しておきます。

Sub 表内の文字列を配列に格納する()
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 "表を選択してから実行してください。"

End Sub

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メソッドで、

表内の文字列を配列に格納するPowerPointマクロ

Cellオブジェクトが取得できます。

PowerPointで表のデータを配列に格納するコードをあらためて眺めてみると、Excelの場合2次元配列にデータを格納するのは簡単だなぁと、感心させられます。

最終更新日時:2020-02-12 10:55

[スポンサードリンク]

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » 表・テーブル » 表内の文字列を2次元配列に格納するPowerPointマクロ

「表・テーブル」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.