先日こちらで ご教示頂いたコードですが、 1点確認不足で、下記のコード修正願いたいのですが txtファイルの指定した値を置換するのですが、 もともとのtxtファイルの文字コードは「UTF-8」 なんですが下記コードを使用し置換すると正しく値は置換されるのですが 文字コードが「UTF-8(BOM付)」になってしまいます。 置換後に文字コード「UTF-8」で保存したいのですがご教示願います Sub フォルダ内テキストファイル置換処理() Dim FSO As Object, xfld As Object Const sfld As String = "C:\pekepeke\" 'フォルダ指定 Application.ScreenUpdating = False Set FSO = CreateObject("Scripting.FileSystemObject") Set xfld = FSO.GetFolder(sfld) Call ReplaceProc(xfld) Set FSO = Nothing Application.ScreenUpdating = True MsgBox "完了" End Sub '置換処理読み込み書き出し Sub ReplaceProc(xfld As Object) Dim xSubFld As Object Dim m As String, f As String, x As String Dim chrep As String '置換前文字(D12) Dim repch As String '置換後文字(G12) chrep = Range("D12").Value repch = Range("G12").Value m = "UTF-8" '文字種指定"Shift-JIS" '"UTF-8" "Unicode" f = Dir(xfld & "\*.txt") Do Until f = "" With CreateObject("ADODB.Stream") .Type = 2 .Charset = m .Open .LoadFromFile xfld & "\" & f x = .ReadText(-1) Call ReplaceUTF8(xfld & "\" & f, chrep, repch) .Close End With f = Dir() Loop For Each xSubFld In xfld.subfolders Call ReplaceProc(xSubFld) Next xSubFld End Sub '置換処理 Public Function ReplaceUTF8(FileName As String, TargetText As String, Optional NewText As String = "") Dim buf_strTxt As String With CreateObject("ADODB.Stream") .Charset = "UTF-8" '文字種指定"Shift-JIS" '"UTF-8" "Unicode" .Open .LoadFromFile FileName buf_strTxt = .ReadText .Close End With buf_strTxt = Replace(buf_strTxt, TargetText, NewText, , , vbTextCompare) '置換処理 With CreateObject("ADODB.Stream") .Charset = "UTF-8" .Type = 2 .Open .WriteText buf_strTxt .SaveToFile (FileName), 2 .Close End With End Function
Excel