Vba 如何找到&;代替
我有这个代码,我想知道它是否可以更短 我是VBA新手,我从宏录制器开始。功能是“查找和替换”。我知道这一定有一个简短的代码Vba 如何找到&;代替,vba,ms-word,Vba,Ms Word,我有这个代码,我想知道它是否可以更短 我是VBA新手,我从宏录制器开始。功能是“查找和替换”。我知道这一定有一个简短的代码 Sub TOs() ' ' MACRO_TOS Macro ' ' Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text =
Sub TOs()
'
' MACRO_TOS Macro
'
'
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "To=____________________________"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
With Selection
If .Find.Forward = True Then
.Collapse Direction:=wdCollapseStart
Else
.Collapse Direction:=wdCollapseEnd
End If
.Find.Execute Replace:=wdReplaceOne
If .Find.Forward = True Then
.Collapse Direction:=wdCollapseEnd
Else
.Collapse Direction:=wdCollapseStart
End If
.Find.Execute
End With
End Sub
Replace:=wdReplaceAll
一次全部替换.MatchWildcards=True
在可能出现空格的.Text
中允许使用通配符。例如:
.Text=“To*=*.\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
Option Explicit
Sub RemoveTo()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "To=____________________________"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll 'replaceAll
End Sub
MatchCase、MatchWholeWordForms、MatchAllWordForms和MatchSounds都不能使用通配符。因此,该准则可简化为:
Sub RemoveTo()
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "To[ =]@[_]{1,}"
.Replacement.Text = ""
.Forward = True
.Format = False
.Wrap = wdFindContinue
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
End With
End Sub
甚至:
Sub RemoveTo()
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Execute FindText:="To[ =]@[_]{1,}", ReplaceWith:="", MatchWildcards:=True, _
Forward:=True, Format:=False, Wrap:=wdFindContinue, Replace:=wdReplaceAll
End With
End Sub
此外,我还有一个文本无法查找和替换,因为它在每个单词之间都有选项卡式空格,您知道如何查找和替换它吗?此代码是MS word代码。请通过将标记从更改为来澄清标记中的内容,否则它将显示在错误的类别中。@Pᴇʜ是的,我的错!
.Clear
和.Replacement.ClearFormatting
在With
之前和之后执行…
都可以包含在With
块中吗?@FreeMan您当然可以将它们包含在With
块中。这只是因为宏记录器记录宏的技术问题。它不会生成完美的代码。“它不会生成完美的代码”-对此非常清楚!!不过,不得不说,它比Excel的宏记录器生成的代码更好看。