web-dev-qa-db-ja.com

WordでVBA(MACRO)を使用して(RegExpオブジェクト)正規表現を使用/有効にする方法

VBAで正規表現を使用する方法または使用を開始する方法について適切な回答を得るために、多くのグーグル操作を行いました。

やっと手に入れたので、皆さんと私の知識を共有したいと思います。私が間違っていたら訂正してください。

16

Word 2007では、デフォルトで[正規表現]オプションが無効になっているため、次の手順を実行できます。

1)。以下に示すように、[ツール]> [参照]に移動します。 enter image description here

2)。ここで、「Microsoft VBScript Regular Expressions 5.5」オプションにチェックマークを付け、次に示すようにohを押します。 enter image description here

3)。これで、VBAスクリプトにRegExpオブジェクトを作成できます。以下で説明するように、オブジェクトデータベースで検索していることを確認できます。以下に示すように、[表示]> [オブジェクトブラウザ](またはF2キーを押します)。

enter image description here

regExpオブジェクトを検索します

enter image description here

4)。 RegExpオブジェクトは、正規表現を使用してパターンを照合します。以下のプロパティはRegExpによって提供されます。これらのプロパティは、パターンを設定してRegExpインスタンスに渡される文字列を比較します。

a。Pattern:正規表現を定義する文字列。

b。IgnoreCase:すべてに対して正規表現をテストする必要があるかどうかを示すブールプロパティ文字列内で一致する可能性があります。

c。Global:ブール値を設定するか、パターンかどうかを示すブール値を返します検索文字列全体のすべての出現に一致するか、パターンが最初の出現にのみ一致する必要があるかどうか。

RegExpは、ストリングが正規表現の特定のパターンに一致するかどうかを判別するための以下のメソッドを提供します。

d。Test:正規表現が正常に一致したかどうかを示すブール値を返します文字列に対して。

e。Execute:成功した一致ごとに、Matchオブジェクトを含むMatchCollectionオブジェクトを返します。

Microsoft msdnフォーラムで提供されているRexExpの類似例を見つけてください。

Function TestRegExp(myPattern As String, myString As String)
   'Create objects.
   Dim objRegExp As RegExp
   Dim objMatch As Match
   Dim colMatches   As MatchCollection
   Dim RetStr As String

   ' Create a regular expression object.
   Set objRegExp = New RegExp

   'Set the pattern by using the Pattern property.
   objRegExp.Pattern = myPattern

   ' Set Case Insensitivity.
   objRegExp.IgnoreCase = True

   'Set global applicability.
   objRegExp.Global = True

   'Test whether the String can be compared.
   If (objRegExp.Test(myString) = True) Then

   'Get the matches.
    Set colMatches = objRegExp.Execute(myString)   ' Execute search.

    For Each objMatch In colMatches   ' Iterate Matches collection.
      RetStr = RetStr & "Match found at position "
      RetStr = RetStr & objMatch.FirstIndex & ". Match Value is '"
      RetStr = RetStr & objMatch.Value & "'." & vbCrLf
    Next
   Else
    RetStr = "String Matching Failed"
   End If
   TestRegExp = RetStr
End Function

私はそれでほぼ半日を無駄にしたので、それが誰かのために十分に役立つことを願っています。

ありがとう

37