首页 文章

从Excel中插入嵌入的Word模板,书签中的文本 . “错误13类型不匹配”错误

提问于
浏览
0

我目前正在开发一个项目,该项目在一个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 回答

  • 0

    查看代码,问题在于bkMark的声明:

    Dim bkMark As Range
    

    范围对象存在于Excel和Word(不同的对象)上,并且由于上面的代码在excel上运行,它将bkMark声明为Excel Range object,而不是Word Range object .

    但是下面一行返回的范围是Word范围,导致类型不匹配错误:

    Set bkMark = ActiveDocument.Bookmarks(bookmarkname).Range
    

    要解决此问题,您必须将bkMark声明为Word范围,:

    Dim bkMark As Word.Range
    

相关问题