0
助けてください!MS WordワイルドカードVBAマクロ検索テキスト.docファイル内の二重の中に
私は修正しようとしているMicrosoft Word用のVBAマクロを持っています。 マクロの目的は、二重中括弧{{anything}}の中にあるものにマッチすることですが、中括弧は同じ行で開いて閉じる必要があります。 私は試合が終わると、フォーマット、スタイル、カラーなどの変更を適用し、選択された他のテキストを適用する必要があります。
私が検索する必要がある.docは、テーブルがあり、テキストボックスやその他のオブジェクトを描画します。そのため、ms単語から通常の検索を使いたいのです。
例:私はこの試みた
{{1,000.00}} match (1)
{{Interesting}} match (1)
{{Within}} match (1)
{{1’100.00’}} match (1)
**{{01A10}} {{01A10}}** match (2) twice
{{ 1 }} match (1)
{{10-}} {{-10}} match (2) twice
[[1252}} No match (0)
{{8888888.99 No match (0), because close curly braces are in a new line
}}
{{}} match (1)
{{1’000’000.05}} match (1)
{{ No match (0)
}} No match (0)
"[{] {2} < *>}]を{2}" が、それは望ましくない結果をもたらす動作しません。 ご協力いただければ幸いです。
Sub GetTotalReport()
Dim totalReport As Double
Dim placeHolderRep As Variant
Dim placeHolder As Variant
ActiveDocument.Select
totalReport = 0#
Selection.Find.ClearFormatting
With Selection.Find
.Text = "[\{]{2}<*>[\}]{2}"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
Do While .Execute
With Selection
.Font.Italic = True
.Font.Bold = True
If Not .Text = "" Then
placeHolderRep = Mid(.Text, 3, Len(.Text) - 4)
.Text = placeHolderRep
placeHolder = placeHolderRep
placeHolder = Replace(Replace(Replace(placeHolder, ",", ""), "'", ""), "’", "")
totalReport = totalReport + Val(placeHolder)
End If
End With
Loop
End With
End Sub
Remou、ご提案のためのおかげで、私は私の溶液中で、このコードを使用して、いくつかの問題を参照してください: 1.私が検索しなければならない文書は最大500ページになる可能性があります。配列はその量の行をサポートしないと思います。パフォーマンスは悪くなると思います。 2.私の文書は本当に複雑で、テーブルと描画テキストボックスを持っているので、そのメソッドで選択範囲を分割すると、テーブルやテキストボックスからテキストが得られません。 3.一致したら、フォーマットを変更して、選択したテキストにいくつかの変更を適用する必要があります。そのオプションは私にその変更を与えるものではありません。 –