[英]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.