Word文档只能从文档中提取表格

我正在使用这个代码。 它打开一个Word文档从文档中提取表格并填充一个Excel文件。 一切都很适合这个部分。 现在我想填充Excel文件,只有当字表中的第一个单元格包含这个string“Row N#”,我被封锁了。

在这里我的代码:

Option Explicit Sub ImportWordTable() Dim wdDoc As Object Dim wdFileName As Variant Dim tableNo As Integer 'table number in Word Dim iRow As Long 'row index in Excel Dim iCol As Integer 'column index in Excel Dim resultRow As Long Dim tableStart As Integer Dim tableTot As Integer On Error Resume Next ActiveSheet.Range("A:AZ").ClearContents wdFileName = Application.GetOpenFilename("Word files (*.doc),*.doc", , _ "Browse for file containing table to be imported") If wdFileName = False Then Exit Sub '(user cancelled import file browser) Set wdDoc = GetObject(wdFileName) 'open Word file With wdDoc tableNo = wdDoc.tables.Count tableTot = wdDoc.tables.Count If tableNo = 0 Then MsgBox "This document contains no tables", _ vbExclamation, "Import Word Table" ElseIf tableNo > 1 Then tableNo = InputBox("This Word document contains " & tableNo & " tables." & vbCrLf & _ "Enter the table to start from", "Import Word Table", "1") End If resultRow = 4 For tableStart = 1 To tableTot With .tables(tableStart) If .tables(tableStart).Cell(1, 1).Range.Value = "Row N#" Then 'copy cell contents from Word table cells to Excel cells For iRow = 1 To .Rows.Count For iCol = 1 To .Columns.Count Cells(resultRow, iCol) = WorksheetFunction.Clean(.Cell(iRow, iCol).Range.Text) Next iCol resultRow = resultRow + 1 Next iRow End If End With resultRow = resultRow + 1 Next tableStart End With End Sub 

End WithwdDocwdDoc

我不认为你真的想要寻找wdDoc.tables(tableStart).tables(tableStart).Cell(1, 1).Range.Value这是第n个表的第n wdDoc.tables(tableStart).tables(tableStart).Cell(1, 1).Range.Value表的第一个单元格 – 输其中一个.tables(tableStart).

With陈述似乎是一个好主意,但他们让你打开这种错误,特别是当他们嵌套。 更可读和更less的错误容易定义一个本地表variables,并在循环的开始分配给它。

另外,我认为这可以通过使用剪切和粘贴function更快,更容易地实现