- 締切済み
Word版VBで表の任意の箇所を取得する(Cellメソッド)
Visual Basic でワードの表を操作する際の方法をお伺いします。 通常は、Cellメソッドを利用して、 ActiveDocument.Tables(1).Cell(2,3) のように、Cellメソッドに行・列を引数として与えますが、セルが結合されている場合に引数はどのように指定するのでしょうか。 会社のPCだと結合されたセルは飛ばして列数を数えているようでしたが、自分のPCだと結合されたセルも数えています。結合されている(他に併合された)セルの行・列を指定するとエラーがでます。 Wordのバージョンによっても違うのでしょうか。あるいはTableオブジェクトのプロパティか何かを指定することで、結合されたセルを数えるかどうかを指定できるのでしょうか。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
Sub test01() On Error GoTo e1 MsgBox ActiveDocument.Tables(1).Rows.Count For i = 1 To ActiveDocument.Tables(1).Rows.Count For j = 1 To ActiveDocument.Tables(1).Columns.Count MsgBox ActiveDocument.Tables(1).Cell(i, j) Next j Next i Exit Sub e1: MsgBox i & "行" & j & "列エラー" Resume Next End Sub を作って実行してみました。それから推測すると >会社のPCだと結合されたセルは飛ばして列数を数えているようでしたが マージ(結合)されたとき、セルの要素に、ワードが何かサインを立てるのではないでしょうか。 列数というもの(行数というものも)は結合したからといって、変わらないと思いますが。 ただし各列について全列で、上下行を結合すると、ActiveDocument.Tables(1).Rows.Count が1つ減るようですが。 >Tableオブジェクトのプロパティか何かを指定することで・・ 多分そういう考え方ではないと思います。 「表を操作する」とき、どういう点で困っているのでしょうか。
補足
ありがとうございます。 表を操作するというのは、実はWordで定型帳票を作成していて、Excelではその内容をデータベース化しています。ExcelのデータをWordの表に書き込むために、 Cell(row, column).Text = ~~~ のような処理をしています。逆にWordの表からExcelへデータを戻すことも考えています。 こうした処理の中で、Wordの定型帳票が結構複雑で、セルの結合や削除をした結果、行ごとに列数がバラバラになっているので、VBからの操作で苦労しております。 Word版のVBのマニュアルで良いモノが見あたらず、その意味でも苦労している状況です。