使用包含大小不同的命名范围的数组的错误13(类型不匹配)

时间:2018-07-10 17:37:23

标签: excel excel-vba ms-word

背景

计划使用预定义的字符串在Word文档中定义位置,并使用Excel将数据导入到这些位置。这包括用另一个字符串(单元格值)替换一个预定义的字符串,以及用一个表替换一个预定义的字符串(Excel中的命名范围,不同的列/行数)。

我打算使用数组进行替换。


问题:

我试图将位置保存在名为brr的数组中(不正确),其中,数组由电子表格中的位置组成,包括单个单元格和命名范围表。

在循环中尝试对表(命名范围)使用brr时出现错误:运行时错误13,键入不匹配


问题:

有没有一种方法可以将brr修复为包含表,如何解决?

还是,是否有更合适的方法来执行此替换?


有问题的代码:

Option Explicit

Sub Replace_from_Excel_to_Word()
    Dim i As Long, arr As Variant, brr As Variant, WApp As Object, loc As String
    arr = Array("[1]", "[2]", "[3]", "[4]", "[5]", "[Table1]", "[Table2]", "[Table3]")
    brr = Array(Sheets("Profile").Cells(1, 2).Value, Sheets("Profile").Cells(2, 2).Value, Sheets("Profile").Cells(3, 2).Value, Sheets("Profile").Cells(4, 2).Value, Sheets("Profile").Cells(5, 2).Value, Sheets("Table1").Range("Table1").Value, Sheets("Table2").Range("Table2").Value, Sheets("Table3").Range("Table3").Value)
    loc = Environ$("USERPROFILE") & "\Documents\Other_Projects\MWR_SPz\Template.docx"
    Set WApp = CreateObject("Word.Application")
    WApp.Documents.Open (loc)
    WApp.Visible = True
    For i = LBound(arr) To UBound(arr)
        With WApp.ActiveDocument
            With .Content.Find
                .Execute FindText:=arr(i), ReplaceWith:=brr(i), Replace:=1
            End With
        End With
    Next i
End Sub

1 个答案:

答案 0 :(得分:0)

多像元范围的值是一个2维数组,因此您不能使用此方法在文档中创建表-您将需要以“长”方式(即逐步创建) -步骤)

可能有用:

...以及此处的其他Q

相关问题