簡體   English   中英

MSWord 2013的VBA查找替換宏

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM