Vba 在MS Word 2010中查找并替换整个文档中的文本(包括表格)
我有一个MS Word文档,包括一个表。我正在尝试使用以下代码通过VBA查找和替换文本:Vba 在MS Word 2010中查找并替换整个文档中的文本(包括表格),vba,ms-word,Vba,Ms Word,我有一个MS Word文档,包括一个表。我正在尝试使用以下代码通过VBA查找和替换文本: If TextBox1.Text <> "" Then Options.DefaultHighlightColorIndex = wdNoHighlight Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting Selection.Find.Replacement.Hig
If TextBox1.Text <> "" Then
Options.DefaultHighlightColorIndex = wdNoHighlight
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Highlight = True
With Selection.Find
.Text = "<Customer_Name>"
.Replacement.Text = TextBox1.Text
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.ClearFormatting
With Selection.Find.Font
.Italic = True
End With
Selection.Find.Replacement.ClearFormatting
With Selection.Find.Replacement.Font
.Italic = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End If
如果TextBox1.Text为“”,则
Options.DefaultHighlightColorIndex=wdNoHighlight
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Highlight=True
选择。查找
.Text=“”
.Replacement.Text=TextBox1.Text
.Forward=True
.Wrap=wdFindContinue
.Format=False
.MatchCase=False
.MatchWholeWord=False
.MatchWildcards=False
.MatchSoundsLike=False
.MatchAllWordForms=False
以
Selection.Find.ClearFormatting
使用Selection.Find.Font
.Italic=True
以
Selection.Find.Replacement.ClearFormatting
使用Selection.Find.Replacement.Font
.Italic=假
以
Selection.Find.Execute Replace:=wdReplaceAll
如果结束
这可以很好地替换表外的所有内容。但是它不会替换表中的任何内容。如果您的目标是在整个文档中执行替换(从代码上看是这样,但并不明确),我建议您使用
Document.Range
而不是Selection
对象。使用Document.Range
将确保所有内容都被替换,即使是在表中
此外,它对用户更透明,因为宏不会移动光标(或选择)
Sub Test()
If TextBox1.Text <> "" Then
Options.DefaultHighlightColorIndex = wdNoHighlight
With ActiveDocument.Range.Find
.Text = "<Customer_Name>"
.Replacement.Text = TextBox1.Text
.Replacement.ClearFormatting
.Replacement.Font.Italic = False
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
End If
End Sub
子测试()
如果是TextBox1.Text“”,则
Options.DefaultHighlightColorIndex=wdNoHighlight
使用ActiveDocument.Range.Find
.Text=“”
.Replacement.Text=TextBox1.Text
.Replacement.ClearFormatting
.Replacement.Font.Italic=False
.Forward=True
.Wrap=wdFindContinue
.Format=False
.MatchCase=False
.MatchWholeWord=False
.MatchWildcards=False
.MatchSoundsLike=False
.MatchAllWordForms=False
.Execute Replace:=wdReplaceAll
以
如果结束
端接头
我使用了以下代码,它工作起来很有魅力。。。。。对于文档中发现的所有事件
stringReplaced = stringReplaced + "string to be searched"
For Each myStoryRange In ActiveDocument.StoryRanges
With myStoryRange.Find
.Text = "string to be searched"
.Replacement.Text = "string to be replaced"
.Wrap = wdFindContinue
.ClearFormatting
.Replacement.ClearFormatting
.Replacement.Highlight = False
.Execute Replace:=wdReplaceAll
End With
Next myStoryRange