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>