Vba 选择替换结果-Word宏
我想获取并选择查找和替换宏的结果,并对其执行一些操作 比如,这是文本:<代码>\[abc\]代码>,我想将其转换为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
代码如下:
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
)。我把它写下来作为答案