式から除外される適切なワイルドカード([!]
である必要があると思います)を思い付くことができないようです。
argument[oales]{1,4}
次の3つの言葉
引数os
引数a
引数as
つまり、次の3つの単語だけを見つけてほしいのです。
引数o
引数al
引数ales
ですから、そもそも適切ではないのはargument[oales]{1,4}
という式かもしれません。
他の形態学的なWordファミリーで使用できるように、実際には「パターン式」を見つけようとしていることに注意してください。したがって、これらの3つの単語は単なる例です。
このパターンをマクロで使用し、場合によっては[検索と置換]オプションで使用して、置換をバッチで実装します。
そうでなければ、いくつかのアドインまたはサードパーティの「検索と置換」ソフトウェアツールがその仕事をしますか?
これが私が使用しているマクロです。
Sub ReplaceFromTableList()
Dim oChanges As Document, oDoc As Document
Dim oTable As Table
Dim oRng As Range
Dim rFindText As Range, rReplacement As Range
Dim i As Long
Dim sFname As String
Dim sAsk As String
sFname = "C:\Users\Win7\Desktop\macro.docx" 'The table document
Set oDoc = ActiveDocument
Set oChanges = Documents.Open(FileName:=sFname, Visible:=False)
Set oTable = oChanges.Tables(1)
For i = 1 To oTable.Rows.Count
Set oRng = oDoc.Range
Set rFindText = oTable.Cell(i, 1).Range
rFindText.End = rFindText.End - 1
Set rReplacement = oTable.Cell(i, 2).Range
rReplacement.End = rReplacement.End - 1
With oRng.Find
.ClearFormatting
.Replacement.ClearFormatting
Do While .Execute(FindText:=rFindText, _
MatchCase:=True, _
MatchWholeWord:=True, _
MatchWildcards:=True, _
Forward:=True, _
Wrap:=wdFindStop) = True
oRng.Select
'oRng.FormattedText = rReplacement.FormattedText
oRng.Text = rReplacement.Text
oRng.Collapse wdCollapseEnd
Loop
End With
Next i
oChanges.Close wdDoNotSaveChanges
lbl_Exit:
Exit Sub
End Sub
ランタイムエラー5692の後にデバッグする場合、マクロの次のセクション
Do While .Execute(FindText:=rFindText, _
MatchCase:=True, _
MatchWholeWord:=True, _
MatchWildcards:=True, _
Forward:=True, _
Wrap:=wdFindStop) = True
microsoftWordによって選択された黄色で表示されます。
残念ながら、Wordの正規表現は代替の_|
_も、「ゼロ以上」の数量詞(_*
_または_{0,1}
_)もサポートしていないため、簡単な方法はありません。 。
個別の検索で各フォームを探す必要があります。
質問を読み直すと、マクロで使用することに気づきました。幸い、正規表現は異なります。次のように使用できます。
argument(o|al|ales)^
ここで、_|
_はオプションの部分を区切り、_^
_は単語の終わりです(_()
_の代わりに_[]
_を使用していることに注意してください)。