这为我工作与你的样本文件。有可能有可能是其他场景中它可能不工作...
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
Dim allTables As Collection '<<
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
Set allTables = GetTables(wdDoc) '<<< see function below
tableNo = allTables.Count
tableTot = allTables.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 allTables(tableStart)
'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 With
resultRow = resultRow + 1
Next tableStart
End Sub
'extract all tables from Word doc into a collection
Function GetTables(doc As Object) As Collection
Dim shp As Object, i, tbls As Object
Dim tbl As Object
Dim rv As New Collection
'find tables directly in document
For Each tbl In doc.Tables
rv.Add tbl
Next tbl
'find tables hosted in shapes
For i = 1 To doc.Shapes.Count
On Error Resume Next
Set tbls = doc.Shapes(i).TextFrame.TextRange.Tables
On Error GoTo 0
If Not tbls Is Nothing Then
For Each tbl In tbls
rv.Add tbl
Next tbl
End If
Next i
Set GetTables = rv
End Function
你确定它们实际上是在文档中的表?如果你点击一个,它会激活“表格工具”选项卡? –
是的,100%确定有桌子。如果我把这些表格靠近页面顶部的单词,那么代码工作得很好。谢谢你的问题。 – smurf
听起来很奇怪,但如果没有示例“问题”文档可以使用,我们可能没有多少提供。 –