Home » ワードマクロ・Word VBAの使い方 » 表・テーブル » 表内の文字列を2次元配列に格納するWordマクロ

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

対象:Word2007, Word2010, Word2013

「word vba 配列に読み込む」
という検索キーワードを元にした、本文中の文字列を段落ごとに配列変数に格納するWordマクロをご紹介しました。

Word VBA(Visual Basic for Applications)で、配列変数にデータを格納したいという要望を考えてみると、表内の文字列を2次元配列に格納するというニーズもありそうです。

今回はそんなマクロをご紹介します。

[スポンサードリンク]

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

配列にデータを格納したい表の中にカーソルを置いてから以下のマクロを実行すると、表内の文字列が2次元配列に格納されている様子が確認できます。


Sub 表のデータを配列に格納する()

 Dim tbl As Table
 Dim cells() As String
 Dim buf As String
 Dim r_cnt As Long ' 表の行数
 Dim c_cnt As Long ' 表の列数
 Dim r As Long  ' 行ループのカウンタ変数
 Dim c As Long  ' 列ループのカウンタ変数

 On Error GoTo ERR_HNDL

 Set tbl = Selection.Tables(1)
 r_cnt = tbl.Rows.Count
 c_cnt = tbl.Columns.Count
 ReDim cells(1 To r_cnt, 1 To c_cnt) As String

 For r = 1 To r_cnt
  For c = 1 To c_cnt

   buf = tbl.Cell(r, c).Range.Text
   cells(r, c) = Left$(buf, Len(buf) - 2)

  Next c
 Next r

 Stop

 Exit Sub

ERR_HNDL:

 MsgBox "表内にカーソルを置いてから実行してください。"

End Sub

何らかのサンプル文字列を表に入力しておいて、その表にカーソルを置いて上記のマクロを実行してください。

Stop文の箇所でステップ実行モードになりますから、VBE(Visual Basic Editor)のメニュー[表示]-[ローカルウィンドウ]からローカルウィンドウを表示してみれば、2次元配列・cellsに表内の文字列が格納されていることが確認できるはずです。

サンプルマクロの解説

表内にカーソルがない状態で実行するとエラーとなりますから、エラー時にはERR_HNDLに飛ぶようにしておきます。
 On Error GoTo ERR_HNDL

カーソルの置かれている表をオブジェクト変数・tblにセットして、
 Set tbl = Selection.Tables(1)

その表の、行数・列数を、変数・r_cnt・c_cntにそれぞれ格納しておきます。
 r_cnt = tbl.Rows.Count
 c_cnt = tbl.Columns.Count

行数・列数から、配列変数・cellsのサイズを決めて、
 ReDim cells(1 To r_cnt, 1 To c_cnt) As String

行のFor~Nextループの中で、列のFor~Nextループを回します。
 For r = 1 To r_cnt
  For c = 1 To c_cnt

二重のFor~Nextループの中で、個々のセル内文字列を変数・bufに一旦格納して、
   buf = tbl.Cell(r, c).Range.Text

変数・buf内の文字列から、末尾の2文字を削除した文字列を、配列変数・cellsに格納しています。
   cells(r, c) = Left$(buf, Len(buf) - 2)

Wordの場合、CellオブジェクトのRangeオブジェクトのTextプロパティで、表内の各セルの文字列を取得できまが、そのままでは、段落記号と、セルの区切り表す制御文字列が含まれているので、末尾の2文字を削除しています。

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

[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » 表・テーブル » 表内の文字列を2次元配列に格納するWordマクロ

TrackBack:0

TrackBack URL

Home » ワードマクロ・Word VBAの使い方 » 表・テーブル » 表内の文字列を2次元配列に格納するWordマクロ

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

検索


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

.