0
しばらく私はVBAのRegexで作業していましたが、正規表現で異なる値を見つけたり置き換えたり、部分文字列を探して置き換えたりできました。しかし、私が望むのは、Wordのネイティブの検索と置換に似た何らかの処理を行う特定の値を隠すことです。これを行うために正規表現を使用して任意の回り道ですか?VBAでRegexを使用してWordでの一致を非表示にする
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Font.Hidden = True
Selection.Find.Replacement.Highlight = False
With Selection.Find
.Text = "\<*\>"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindAsk
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchKashida = False
.MatchDiacritics = False
.MatchAlefHamza = False
.MatchControl = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchFuzzy = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
これを正規表現で行いたいと思います。 は、例えば、そのよう:
regEx.Pattern = (\[[^\[]*?\]|<[^<]*?>|^http.*?$)
regEx.Global = True
If regEx.Test(strSource) Then
Set matches = regEx.Execute(strSource)
Selection.Text=matches
Selection.Font.Hidden = True
End If
アイデアは、選択したテキストに一致する値を割り当てているが、コンテンツのすべての残りの部分を失うことなく、正規表現と一致する値を隠すことができるように。
は、私が(多分、最も効率的ではないが)の方法は、あなたが多くの重複マッチを持っている場合、これは不要なの多くを行うにする2つの方法
Dim rng As Range
Dim mtch as Object
Set rng = ActiveDocument.Range 'or whatever
'set regex values and execute
With regEx
'your options here
.pattern = strPattern
Set matches = .Execute(rng.Text)
End With
'hide matches
For Each mtch In matches
With rng.Find
'your options here
.Text = mtch.Value
.Replacement.Font.Hidden = True
.Execute Replace:=wdReplaceAll
End With
Next mtch
を組み合わせることであろう最も簡単だと思い、
ありがとうございました。非常に有益な答えです。 – TMikonos
あなたは大歓迎です。問題を解決した場合は、それをアップホートおよび/または回答として受け入れることもできます。問題が解決しなかった場合は、理由をいくつか追加してください。 – arcadeprecinct