我目前正在开发一个项目,该项目在一个Excel模板中嵌入了一个单词模板 .
创建了一个Excel中的按钮,用于打开嵌入的单词模板,从excel导出数据并使用单词模板中的书签将它们放入单词中 . 问题是单词报告只能生成一次,因为文本将插入到原始书签中而不是覆盖以前的数据 .
我正在尝试从excel(CoverPageRCA)导出命名字段,并使用书签(bkmtable1_1)将其复制到嵌入的单词模板中 .
我明白了:
run-time error 13 Type mismatch
发生在以下行:
Set bkMark = ActiveDocument.Bookmarks(bookmarkname).Range
我在网上搜索并花了将近24小时 . 有人可以建议一个解决方案吗?
选项明确
昏暗的WD作为新的Word.Application
昏暗的RCAcell1作为范围
Sub CreateRCAReports1()
昏暗的wordDoc作为Word.Document
Dim oleObj作为oleObject
Dim WordApp作为Word.Application
WD.Visible = True
设置oleObj = ActiveWorkbook.Sheets(“CoverPageRCA”) . OLEObjects(1)oleObj.Verb xlVerbPrimary
设置WordApp = oleObj.Object.Application
使用WordApp
.Visible = True
.Activate
Set wordDoc = .Documents(1)
End With
“------------------------------------------------- ------
ThisWorkbook.Sheets( “CoverPageRCA”) . 激活
ActiveSheet.Range( “B2”) . 选择
设置RCAcell1 = ActiveSheet.Range(ActiveCell,ActiveCell.End(xlDown))
'转到每个书签并输入详细信息
CopyCell1“bkmtable1_1”,1
设置WD = Nothing
结束子
“------------------------------------------------- ---------
Sub CopyCell1(bookmarkname为String,RowOffset为Integer)
昏暗的bkMark作为范围
'清除每个书签上的内容并添加新的bookmarK
设置bkMark = ActiveDocument.Bookmarks(bookmarkname).Range
bkMark.Select
bkMark.Text =“dsfsf”
ActiveDocument.Bookmarks.Add bookmarkname,bkMark
'将每个单元格复制到相关的Word书签
WD.Selection.GoTo什么:= wdGoToBookmark,名称:= bookmarkname
WD.Selection.TypeText RCAcell1(RowOffset,1).Value
结束子
1 回答
查看代码,问题在于bkMark的声明:
范围对象存在于Excel和Word(不同的对象)上,并且由于上面的代码在excel上运行,它将bkMark声明为Excel Range object,而不是Word Range object .
但是下面一行返回的范围是Word范围,导致类型不匹配错误:
要解决此问题,您必须将bkMark声明为Word范围,: