背景:
计划使用预定义的字符串在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
答案 0 :(得分:0)
多像元范围的值是一个2维数组,因此您不能使用此方法在文档中创建表-您将需要以“长”方式(即逐步创建) -步骤)
可能有用:
...以及此处的其他Q