VBA

excel VBAの実験.テキストファイルの正規表現による置換処理

excel VBAの実験

大量のテキストファイルは、自動化したい。

wordにて作成したdocファイルをwordでhtm形式に保存して出力、
出力したしたVBAでファイルを読み込み、
HTMLタグを正規表現による置換によって、整形するという一連の処理が
VBAで自動化できなかと思いちょっと実験。

以下、サンプルプログラム

Sub テキストファイルとして読み込み正規表現による置換後別のファイルに書き込む()
    'ファイルの読み込み
    Dim FSO As Object, buf As String, buf2 As String
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''C:\Work\Sample.txtの全ての文字を読み込んで表示します
    With FSO.GetFile("C:\Ruby191\vba_RE.txt").OpenAsTextStream
        buf = .ReadAll
        .Close
    End With
    'Set FSO = Nothing

    '正規表現で置換
    buf2 = buf
    buf2 = ReplaceRegExpr(buf2, "<html>\r\n<body>", "<xxxxxxxxxx>")
    'buf2 = ReplaceRegExpr(buf2, "\r\n\r\n", "vbCrLf")
    buf2 = Replace(buf2, "</section><section>", "</section>" & vbCrLf & "<section>")
    'buf2 = Replace(buf2, "<section>", "xx")


    '既存ファイルに上書き
    With FSO.GetFile("C:\Ruby191\vba_RE_out.txt").OpenAsTextStream(2)
        .Write buf2
        .Close
    End With
    'Set FSO = Nothing
    
    'ファイルの新規作成と書き込み
    With FSO.CreateTextFile("C:\Ruby191\Sample.txt")
        .Write buf2
        .Close
    End With
    
    Set FSO = Nothing
End Sub

'正規置換を行うモジュール、出力=ReplaceRegExpr(入力、検索文字列、置換文字列)
Function ReplaceRegExpr(InputStr As String, RegExpr As String, ReplaceStr As String) As String
    Dim re As RegExp
    Set re = New RegExp
    re.Pattern = RegExpr
    re.Global = True
    ReplaceRegExpr = re.Replace(InputStr, ReplaceStr)
End Function
</pre>

次の2つを使用するには、エクセルVBAのツール>参照設定からVBA Projectを追加する必要がるので注意。
<ul>
<li>FileSystemObject</li>
<li>RegExp</li>
</ul>

-VBA