10

我在 MS word 中有一个 3 X 3(比如 tableA)表。第 (2,2) 个单元格是一个拆分单元格(拆分为 2X2 表)。如何循环遍历 tableA 中的所有单元格。

Dim strCellText As String
Dim uResp As String
Dim Row As Integer
Dim Col As Integer

Dim itable As Table


For Each itable In ThisDocument.Tables

    uResp = ""

    For Row = 1 To itable.Rows.Count

        For Col = 1 To itable.Columns.Count

            strCellText = itable.Cell(Row, Col).Range.Text
            uResp = uResp & Trim(strCellText)                

        Next

    Next

    MsgBox uResp
Next

该程序给出了编译错误:

Run time error 5914
The requested member of the collection does not exist

如何迭代具有拆分单元格的表格的单元格。

4

3 回答 3

7

您应该假设每一行都有最大可能的列数。在你的情况下,那将是四个。为了遍历每个单元格,我建议On Error Resume Next在第一个循环开始之前设置。然后在你的内部循环中,试试这个代码:

strCellText = itable.cell(Row, Col).Range.Text

If Err.Number = 0 Then
    uResp = uResp & Trim(strCellText)
    Debug.Print Row, Col, strCellText
Else
    Err.Clear
End If
于 2013-03-23T10:45:10.253 回答
3

如果你想遍历 MS Word 文档中所有表格中的所有单元格,即使单元格被合并,我也得到了我想要的结果。试试这个:

Sub CheckingInTheCell
Dim C as Cell
Dim tableCount, Ctr

tableCount = ActiveDocuments.tables.count

for Ctr = 1 to tableCount
   For each C in ActiveDocument.Tables(Ctr).Range.cells
       .....your validations or whatever you would like to do for the cell content
   next C
next Ctr

End Sub
于 2018-08-22T17:49:54.540 回答
2

当我尝试从(有时格式错误的)表中提取数据时,我遇到了这种情况。这就是我的处理方式:

检查列数

For each row in table.rows
  if row.cells.count < expectedRows
    'You know you are lacking rows
  else
    'Normal processing
  end if
Next

或者如果您仍然想要所有数据,请浏览每个单元格

For each row in table.rows
  For each cell in row.cells
    'Process individual cells
  Next
Next

如果单元格垂直合并,这些都不起作用。

于 2015-05-20T11:12:54.067 回答