在Excel VBA中的嵌入式Word文档中使用“查找/替换”方法时出错

在Excel VBA中的嵌入式Word文档中使用“查找/替换”方法时出错,excel,vba,ms-word,ole,Excel,Vba,Ms Word,Ole,我的工作表中有一个嵌入式word文档,名称“Rec1” 因此,在使用之前: Sub ReplaceTextinOLEObject Dim oDoc As OLEObject Set oDoc = Worksheets("Sheet1").OLEObjects("Rec1") oDoc.Activate With oDoc.Content.Find .ClearFormatting .Text = "hi" .Repl

我的工作表中有一个嵌入式word文档,名称
“Rec1”

因此,在使用之前:

Sub ReplaceTextinOLEObject
    Dim oDoc As OLEObject
    Set oDoc = Worksheets("Sheet1").OLEObjects("Rec1")
    oDoc.Activate
    With oDoc.Content.Find
        .ClearFormatting
        .Text = "hi"
        .Replacement.ClearFormatting
        .Replacement.Text = "hello"
        .Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue
    End With
    Word.Application.Quit wdDoNotSaveChanges
End Sub
执行上述运行时,带有以下错误的
部件发生错误:

运行时错误“438”:
对象不支持此属性或方法


为OLE嵌入式word文档使用
Find
对象有什么问题?

这里的问题是
OLEObjects
没有
.Content
属性。这也是错误告诉您的

因此,您必须改用
oDoc.Object.Content.Find
。而且你不需要
oDoc。激活
文档,它也可以在没有文档的情况下工作

以下方面应起作用:

Public Sub ReplaceTextinOLEObject
    Dim oDoc As OLEObject
    Set oDoc = Worksheets("Sheet1").OLEObjects("Rec1")
    'oDoc.Activate 'remove this line, activate is not needed here
    With oDoc.Object.Content.Find
        .ClearFormatting
        .Text = "hi"
        .Replacement.ClearFormatting
        .Replacement.Text = "hello"
        .Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue
    End With
    Word.Application.Quit wdDoNotSaveChanges
End Sub
注意:当然,运行此代码需要引用“Microsoft Word 16.0对象库”(版本可能有所不同)