Word table 导入到 Excel 类型不匹配
Word table import into Excel type mismatch
我有下面的宏,可以在 Word 表格中添加一列,并将每个单元格中的值粘贴到最后一行。它 运行 在 Word 中非常完美,但是当 运行 在 Excel 宏中时,它会正确添加新列,但随后会给出范围(tblA、tblB、tblC)的类型不匹配错误.有人可以帮助识别错误吗?非常感谢!
Sub AddTeamColumn()
Dim WordApp As Object, WordDoc As Object
Dim arrFileList As Variant, Filename As Variant
Dim tblA As Range, tblB As Range, tblC As Range
'On Error Resume Next
arrFileList = Application.GetOpenFilename("Word files (*.doc; *.docx),*.doc;*.docx", 2, _
"Select files", , True)
If Not IsArray(arrFileList) Then Exit Sub
Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True
For Each Filename In arrFileList
Set WordDoc = WordApp.Documents.Open(Filename, ReadOnly:=False)
WordDoc.Tables(3).Columns.Add
WordDoc.Tables(4).Columns.Add
WordDoc.Tables(5).Columns.Add
Set tblA = WordDoc.Range(Start:=WordDoc.Tables(3).Cell(2, 8).Range.Start, _
End:=WordDoc.Tables(3).Rows.Last.Range.End)
Set tblB = WordDoc.Range(Start:=WordDoc.Tables(4).Cell(2, 9).Range.Start, _
End:=WordDoc.Tables(4).Rows.Last.Range.End)
Set tblC = WordDoc.Range(Start:=WordDoc.Tables(5).Cell(2, 5).Range.Start, _
End:=WordDoc.Tables(5).Rows.Last.Range.End)
WordDoc.Tables(1).Cell(1, 1).Select
Selection.Copy
'tblA.PasteSpecial DataType:=wdPasteText 'Word
tblA.PasteSpecial xlPasteValues 'Excel
WordDoc.Tables(1).Cell(1, 1).Select
Selection.Copy
'tblB.PasteSpecial DataType:=wdPasteText 'Word
tblA.PasteSpecial xlPasteValues 'Excel
WordDoc.Tables(1).Cell(1, 1).Select
Selection.Copy
'tblC.PasteSpecial DataType:=wdPasteText 'Word
tblC.PasteSpecial xlPasteValues 'Excel
WordDoc.Save
Next Filename
WordApp.Quit
Set WordDoc = Nothing
Set WordApp = Nothing
End Sub
当 运行 来自 Excel 时,您必须将 tbl-Ranges 明确定义为 Word.Range - 否则他们期望 Excel-Ranges (因此类型不匹配) -或者如果你想保留后期绑定,请使用对象。
如果您可以使用早期绑定,那么您必须添加 Microsoft Word 作为对您的 VBA 项目的引用。
'early binding
Dim tblA As Word.Range, tblB As Word.Range, tblC As Word.Range
'late binding
Dim tblA As object, tblB As object, tblC As object
与选择相同:您必须使用 wordapp.Selection
否则将引用 Excel 选择。
我有下面的宏,可以在 Word 表格中添加一列,并将每个单元格中的值粘贴到最后一行。它 运行 在 Word 中非常完美,但是当 运行 在 Excel 宏中时,它会正确添加新列,但随后会给出范围(tblA、tblB、tblC)的类型不匹配错误.有人可以帮助识别错误吗?非常感谢!
Sub AddTeamColumn()
Dim WordApp As Object, WordDoc As Object
Dim arrFileList As Variant, Filename As Variant
Dim tblA As Range, tblB As Range, tblC As Range
'On Error Resume Next
arrFileList = Application.GetOpenFilename("Word files (*.doc; *.docx),*.doc;*.docx", 2, _
"Select files", , True)
If Not IsArray(arrFileList) Then Exit Sub
Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True
For Each Filename In arrFileList
Set WordDoc = WordApp.Documents.Open(Filename, ReadOnly:=False)
WordDoc.Tables(3).Columns.Add
WordDoc.Tables(4).Columns.Add
WordDoc.Tables(5).Columns.Add
Set tblA = WordDoc.Range(Start:=WordDoc.Tables(3).Cell(2, 8).Range.Start, _
End:=WordDoc.Tables(3).Rows.Last.Range.End)
Set tblB = WordDoc.Range(Start:=WordDoc.Tables(4).Cell(2, 9).Range.Start, _
End:=WordDoc.Tables(4).Rows.Last.Range.End)
Set tblC = WordDoc.Range(Start:=WordDoc.Tables(5).Cell(2, 5).Range.Start, _
End:=WordDoc.Tables(5).Rows.Last.Range.End)
WordDoc.Tables(1).Cell(1, 1).Select
Selection.Copy
'tblA.PasteSpecial DataType:=wdPasteText 'Word
tblA.PasteSpecial xlPasteValues 'Excel
WordDoc.Tables(1).Cell(1, 1).Select
Selection.Copy
'tblB.PasteSpecial DataType:=wdPasteText 'Word
tblA.PasteSpecial xlPasteValues 'Excel
WordDoc.Tables(1).Cell(1, 1).Select
Selection.Copy
'tblC.PasteSpecial DataType:=wdPasteText 'Word
tblC.PasteSpecial xlPasteValues 'Excel
WordDoc.Save
Next Filename
WordApp.Quit
Set WordDoc = Nothing
Set WordApp = Nothing
End Sub
当 运行 来自 Excel 时,您必须将 tbl-Ranges 明确定义为 Word.Range - 否则他们期望 Excel-Ranges (因此类型不匹配) -或者如果你想保留后期绑定,请使用对象。
如果您可以使用早期绑定,那么您必须添加 Microsoft Word 作为对您的 VBA 项目的引用。
'early binding
Dim tblA As Word.Range, tblB As Word.Range, tblC As Word.Range
'late binding
Dim tblA As object, tblB As object, tblC As object
与选择相同:您必须使用 wordapp.Selection
否则将引用 Excel 选择。