[英]VBA find-replace macro for MSWord 2013
我已经进行了一些谷歌搜索,但无法找到一种方法来创建满足我特定需求的VBA宏代码。 我要完成的工作是通过粘贴到Word中的一些XML代码进行宏搜索,找到<CID>*</CID>
和<FirstName>*</FirstName>
的值,提取值,然后替换它具有新的元素格式: <FName id="*">*</FName>
,其中*表示通配符搜索,以搜索两个元素标记之间的任何值。 因此,在下面的XML代码示例中,我希望宏提取“ 59”和“ John”,删除整个代码,然后将提取的值<FName id"59">John</FirstName>
为新的元素格式: <FName id"59">John</FirstName>
。 我的代码和VMBA宏:
***XML Code***
<CustIDandName>
<CID>59</CID>
<FirstName>17</FirstName>
</CustIDandName>
将其更改为<FName id="59">John</FName>
***Word VBA Macro Code I have so far...***
With Selection.Find
.Text = "\<FirstName\>*\<\/FirstName\>"
.Replacement.Text = "<FName id="59">John</FName>"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = True
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
您可以使用Word通配符搜索和替换模式来实现此目的:
查找文字:
\<CID\>([0-9]*)\</CID\>*\<FirstName\>(*)\</FirstName\>
替换文字:
<FName id="\1">\2</FirstName>
由于替换文本包含引号,因此必须确保禁用将自动引号替换为印刷引号的功能。
Dim AutoFormatAsYouTypeReplaceQuotes As Boolean
Dim AutoFormatReplaceQuotes As Boolean
' remember auto correct options
AutoFormatAsYouTypeReplaceQuotes = Options.AutoFormatAsYouTypeReplaceQuotes
AutoFormatReplaceQuotes = Options.AutoFormatReplaceQuotes
' disable auto correct of quotes
Options.AutoFormatAsYouTypeReplaceQuotes = False
Options.AutoFormatReplaceQuotes = False
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "\<CID\>([0-9]*)\</CID\>*\<FirstName\>(*)\</FirstName\>"
.Replacement.Text = "<FName id=""\1"">\2</FirstName>"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.