Vba 选择替换结果-Word宏

Vba 选择替换结果-Word宏,vba,ms-word,full-text-search,Vba,Ms Word,Full Text Search,我想获取并选择查找和替换宏的结果,并对其执行一些操作 比如,这是文本:‎\[abc\]‎,我想将其转换为abc,然后选择abc 代码如下: Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting 选择。查找 .Text=“(\\\[)(*)(\\\])” .Replacement.Text=“\2” .Forward=True .Wrap=wdFindContinue .Format=False .Mat

我想获取并选择查找和替换宏的结果,并对其执行一些操作

比如,这是文本:‎<代码>\[abc\]‎,我想将其转换为
abc
,然后选择
abc

代码如下:

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
选择。查找
.Text=“(\\\[)(*)(\\\])”
.Replacement.Text=“\2”
.Forward=True
.Wrap=wdFindContinue
.Format=False
.MatchCase=False
.MatchWholeWord=False
.MatchKashida=False
.MatchDiacritics=False
.MatchAlefHamza=错误
.MatchControl=False
.MatchAllWordForms=False
.MatchSoundsLike=False
.MatchWildcards=True
以
Selection.Find.Execute Replace:=wdReplaceAll
选择,剪
在最后一行中,
Selection.Cut
给出了一个选择为空的错误。 我想选择替换的输出并将其剪切


从我的存储库中

wdReplaceAll
,因为替换“目标”不会跳转到单个“命中”,这就是为什么
选择
没有拾取任何内容

改为使用
wdReplaceOne
,则
选择
(或
范围
对象,如果使用)将移动到找到的内容

您可能希望在发出
.Cut
命令之前测试是否确实找到了某些内容,因为如果没有找到任何内容,则可能会产生意外的后果(在宏启动时删除内容)。例如:

Sub FindReplaceAndCut()
    Dim found As Boolean

    With Selection.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Text = "(\\\[)(*)(\\\])"
        .Replacement.Text = "\2"
        .Forward = True
        .wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchKashida = False
        .MatchDiacritics = False
        .MatchAlefHamza = False
        .MatchControl = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    End With
    found = Selection.Find.Execute(Replace:=wdReplaceOne)
    If found Then
        Selection.Cut
    End If
End Sub

问题是您使用的是
wdReplaceAll
。这不会移动到任何内容—它只是替换文档中匹配的所有内容。@Cindymister我应该怎么做?删除
wdReplaceAll
修复了该问题?仅使用
选择。查找。执行
会出现
运行时错误4605,由于对象为空,该方法或属性不可用。
。抱歉,我在移动设备上,之前。。。改为使用
wdReplaceOne
,它将进行一次替换,将选择(或范围,如果使用了
Range
)。我把它写下来作为答案