【问题标题】:Word table import into Excel type mismatchWord 表格导入 Excel 类型不匹配
【发布时间】:2021-09-22 16:46:22
【问题描述】:

我有下面的宏来向 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 import word type-mismatch


    【解决方案1】:

    从 Excel 运行时,您必须将 tbl-Ranges 显式定义为 Word.Range - 否则他们期望 Excel-Ranges(因此类型不匹配) - 如果您想保持后期绑定,请使用 object。

    如果您可以使用早期绑定,那么您必须将 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 选择。

    【讨论】:

    • 非常感谢@Ike - 吸取了教训!本周节省了两次! :-)
    猜你喜欢
    • 2012-04-12
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多