簡略にはまとめて置換する Replace 関数で済ませたいが、改行コード
CrLf
が Lf
に変わってしまった。Dim Reg As New RegExp
Reg.MultiLine = True
Reg.Global = True
'SQL 行コメントの場合の正規表現パターン
Reg.Pattern = "--.*$"
'タブやスペースの場合の正規表現パターン
Reg.Pattern = "( |\t)+$"
Result = Reg.Replace(Text, "")
代替案として、改行コードを変更(元に戻す)するステップを加えます。
' 改行コード CrLf と Lf が混在している状態から、Lf に統一する
Text = Replace(Expression:=Text, Find:=vbCr, Replace:="", Count:=-1, Compare:=VbCompareMethod.vbBinaryCompare)
' 改行コードを Lf から CrLf に変換する
Text = Replace(Expression:=Text, Find:=vbLf, Replace:=vbCrLf, Count:=-1, Compare:=VbCompareMethod.vbBinaryCompare)
どうやら、RegExp による改行についての置換は問題がありそう。
[VBA] RegExp.Replace で改行コードが変わってしまう
http://mofuken.blogspot.jp/2014/10/vba-regexpreplace.html
■ 参考資料
Microsoft Visual Basic 6.0 で正規表現を使用する方法http://support.microsoft.com/kb/818802