在Excel VBA中的嵌入式Word文档中使用“查找/替换”方法时出错
我的工作表中有一个嵌入式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
“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对象库”(版本可能有所不同)