VBA Word表格到Excel段落和For Error



我有两个问题:

  1. 我需要在.docx中复制一个在a列中有段落编号的表。表的第一行是一个始终合并的(a-C(。该表可以是任意数量的行,但格式相同

.docx表格Ex:

A   B   C
|'title...'|
|1.| T | F |
|2.| F | T |
|3.| T | T |

我知道这段代码关注(2,1(,但它没有返回编号为"1."的表。它只是将(2,1.(作为一个空白单元格返回。理想情况下,它将返回值"1"(没有句点(。

  1. 当我运行完整的代码时,它第一次传递到"Next iCol",然后在"Cells(resultRow,iCol(…"处出错其中:";集合的请求成员不存在";。我认为这与第一行被合并有关,所以Cell(1,2(不存在,但我不确定解决方案

问题代码:

ElseIf .Found = True Then
For iRow = 1 To wrdDoc.Tables(3).Rows.Count
For iCol = 1 To wrdDoc.Tables(3).Columns.Count
Cells(resultRow, iCol) = WorksheetFunction.Clean(wrdDoc.Tables(3).Cell(iRow, iCol).Range.Text)
Next iCol
resultRow = resultRow + 1
Next iRow
resultRow = resultRow + 1
End If

excel中的最终结果应与.docx表相匹配,不包含A列句点。如果比较容易的话,"标题"可以放在A1中,后面跟着表格的其他部分。

A   B   C
|'title..'|
|1| T | F |
|2| F | T |
|3| T | T |
OR
A    B   C
|tle|   |   | 
|1  | T | F |
|2  | F | T |
|3  | T | T |

谢谢你的帮助和时间。

如果每行的第一个单元格被格式化为"编号列表";然后你可以读取这样的值:

Dim r As Long
With wrdDoc.Tables(3)
For r=2 to .Rows.Count
Debug.Print .Cell(r, 1).Range.ListFormat.ListValue
Next r
End with

如果列表使用(例如(A、B、C…,则使用ListFormat.ListString。。。

尝试以下方法

Dim i as long
With wrdDoc.Tables(3).Range
For i = 1 To .Cells.Count
If .Cells(i).RowIndex > iRow Then resultRow = resultRow + 1
iRow = .Cells(i).RowIndex: iCol = .Cells(i).ColumnIndex
ActiveSheet.Cells(resultRow, iCol) = WorksheetFunction.Clean(.Cells(i).Range.Text)
Next
End With

请注意代码中包含了工作表引用-您可能需要对其进行不同的定义。

发布的代码对我来说很好-Excel中的第一个输出单元格包含Word表中第一个单元格的文本。但是,如果该单元格包含自动编号,则不会输出自动编号。这与您自己的代码一致。

尝试捕获自动编号中包含的内容的问题是,这种编号后面通常有一个选项卡,Excel最多将其解释为列分隔符。例如:

wrdDoc.Tables(3).Range.Copy
xlWkSht.Cells(resultRow, 1).PasteSpecial xlPasteValues
resultRow = resultRow + wrdDoc.Tables(1).Range.Rows.Count

最新更新