我正在开发一个 Excel 工作表,用于在 Word 文档中搜索特定实例(A 列)并将其替换为单元格 B 中的实例。
我只想更改与搜索条件匹配的第一个实例,并继续循环该列到下一个实例。
我写了下面的代码。
如果我使用“wdReplaceAll”,它将替换 Word 文档中的所有特定实例。
如果我使用 wdReplaceOne”,代码将在第一次更改后中断。
VBA代码:
Sub Replace()
Dim pathh As String
Dim pathhi As String
Dim oCell As Integer
Dim from_text As String, to_text As String
Dim WA As Object
pathh = "C:\Users\Rui.Fernandes\Arquivo Rui Fernandes\On.me Documentação\Construção\Documentos Obra Tipo\PGC.10.Ed.1 - Auditorias Internas.doc"
Set WA = CreateObject("Word.Application")
WA.Documents.Open (pathh)
WA.Visible = True
For oCell = 1 To 10
from_text = Sheets("PTAct").Range("A" & oCell).Value
to_text = Sheets("PTAct").Range("B" & oCell).Value
With WA
.Activate
With .Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = from_text
.Replacement.Text = to_text
.Execute Replace:=wdReplaceAll
End With
End With
Next oCell
End sub
我怎样才能让它做我想做的事?
您执行后期绑定,因此 wdReplaceAll 和 wdReplaceOne 将不会是您所期望的。在 Word VBA 帮助中查找 WdReplace 枚举及其值。
Sub Replace()
Dim pathh As String
Dim pathhi As String
Dim oCell As Integer
Dim from_text As String, to_text As String
Dim WA As Object
pathh = "C:\Users\axel\Documents\replacetest.docx"
Set WA = CreateObject("Word.Application")
WA.Documents.Open (pathh)
WA.Visible = True
For oCell = 1 To 10
from_text = Sheets("PTAct").Range("A" & oCell).Value
to_text = Sheets("PTAct").Range("B" & oCell).Value
With WA.ActiveDocument
Set myRange = .Content
With myRange.Find
.Execute FindText:=from_text, ReplaceWith:=to_text, Replace:=1
End With
End With
Next oCell
End Sub
问候
Axel
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)