VBA WORD:想要在标签之间获取文本

时间:2018-04-06 12:56:09

标签: word-vba

VBA WORD:想要在标签之间获取文本

我想提取介于

之间的文字
"<start=" and ">"

并使该文本全部为大写,并将所有空格替换为该特定文本上的连字符。

示例:

<start="The quick brown fox jumps' over the lazy dog while the cat is running-towards the obstacle_course">The quick brown fox jumps' over the lazy dog while the cat is running-towards the obstacle_course</end>

输出必须是:

<start="THE-QUICK-BROWN-FOX JUMPS'-OVER-THE-LAZY-DOG-WHILE-THE-CAT-IS-RUNNING-TOWARDS-THE OBSTACLE_COURSE">The quick brown fox jumps' over the lazy dog while the cat is running-towards the obstacle_course</end>

我使用了以下代码,但它最多只适用于10个字(如果可能,没有限制)。是否有可能/其他方式/ s来做到这一点。

With Selection.Find
 .ClearFormatting
 .MatchWildcards = True
 .Replacement.ClearFormatting
 .Text = "<start=" & Chr(34) & xVal & "( )" & xVal & "( )" & xVal & "( )" & xVal & "( )" & xVal
 .Replacement.Text = "<start=" & Chr(34) & "\1-\3-\5-\7-\9"
 .Replacement.Font.AllCaps = True
 .Forward = True
 .Wrap = wdFindContinue
 .Execute Replace:=wdReplaceAll
End with

TIA -Sirk

1 个答案:

答案 0 :(得分:0)

如果您确定要查找的每个实例都以 =&#34; &gt; 开头和结尾,那么您可以使用这段代码。您必须先选择一些包含您正在寻找的文本。

Private Sub FindStartText()
    Dim findRange As range
    Set findRange = Selection.range

    With findRange.Find
     .ClearFormatting
     .MatchWildcards = True
     .Text = "=""*\>"
    End With
    findRange.Find.Execute

    TextChange findRange
End Sub

Private Sub TextChange(foundRange As range)
    Dim myText As String
    myText = foundRange.Text
    myText = Replace(myText, " ", "-")
    myText = UCase(myText)

    foundRange.Text = myText
End Sub