0KWave_IDのプロフィール
- ベストアンサー数
- 0
- ベストアンサー率
- 0%
- お礼率
- 91%
- 登録日2011/08/20
- VB.NETの正規表現をVBAで記述するには
VB2010.NETのコードをExcel2010のVBAのコードに置き換える作業をしていますが、List1のようにVB.NETのコードには、Inports System.Text.RegularExpressions で.NET正規表現パッケージが使われて、この部分をVBAではどのように記述すればよいのでしょうか。 自分なりにList2のようにしてみましたが、Dim M As MatchのMatchの部分で「ユーザ定義型は定義されていません」というコンパイルエラーが発生します。 参照設定にはSystem.Text.RegularExpressionsが見当たりませんが何を指定すればよいのでしょうか。 Microsoft VBScript Regular Expressions 5.5のRegExpオブジェクトでは後読みができないので大変困っています。 よろしくお願いします。(Windows7) ---List1:VB.NET(正常)--------------- Option Explicit On Option Strict On Imports System.Text.RegularExpressions Module Module1 Sub Main() Dim SampleText As String = "今日は西暦2014年6月20日です" Dim M As Match = Regex.Match(SampleText, "(?<=西暦)\d+") If Not M.Success Then Console.WriteLine("no match") Else Dim MatchedText As String = M.Value Dim MatchedFrom As Integer = M.Index Dim MatchedLen As Integer = M.Length MsgBox("matched [" & MatchedText & "]" & _ " from char#" & MatchedFrom.ToString() & _ " for " & MatchedLen.ToString() & " chars.") End If End Sub End Module ---List2:VBA(このコードではエラーになる)----- Option Explicit Sub test() Dim SampleText As String Dim M As Match Dim R As New Regex Dim MatchedText As String Dim MatchedFrom As Integer Dim MatchedLen As Integer SampleText = "今日は西暦2014年6月20日です" R = Regex("(?<=西暦)\d+") M = R.Match(SampleText) If Not M.Success Then MsgBox ("no match") Else MatchedText = M.Value MatchedFrom = M.Index MatchedLen = M.Length MsgBox("matched [" & MatchedText & "]" & _ " from char#" & MatchedFrom.ToString() & _ " for " & MatchedLen.ToString() & " chars.") End If End Sub ------------------------------------------
- ベストアンサー
- Excel(エクセル)
- yam2012
- 回答数4