Sub sample()
'変換表はこのブックの1シート目に用意されているものとする Dim mySheet As Worksheet, rng As Range Set mySheet = ThisWorkbook.Worksheets(1) Set rng = mySheet.UsedRange.Columns(1) 'txtファイルはこのマクロと同じ場所にあるものとする Dim fileName As String fileName = Dir(ThisWorkbook.Path & "*.txt") 'ループ Do While fileName <> "" '読み込み(ファイルはすべてUTF-8であるものとする) Dim buf, arr buf = ADOFileLoad(ThisWorkbook.Path & "\" & fileName) '変換表に従い置換 Dim c As Range For Each c In rng.Cells buf = Replace(buf, c.Value, c.Offset(, 1).Value) DoEvents Next '別名でtxt書き出し ADOFileSave buf, ThisWorkbook.Path & "\New_" & fileName 'シートにも書き出し Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets.Add(After:=mySheet) arr = Split(buf, vbNewLine) ws.Cells.Resize(UBound(arr) + 1, 1).Value = WorksheetFunction.Transpose(arr) '次へ fileName = Dir() Loop
End Sub
Function ADOFileLoad(myPath)
With CreateObject("ADODB.Stream") .Open .Type = 2 .Charset = "UTF-8" .LoadFromFile myPath ADOFileLoad = .ReadText .Close End With
End Function
Sub ADOFileSave(buf, myPath)
With CreateObject("ADODB.Stream") .Open .Type = 2 .Charset = "UTF-8" .WriteText buf .SaveToFile myPath, 2 .Close End With
End Sub
のような形で置き換えをしているのですが、置き換えする文の条件に
= ,で囲まれている場合をつけるにはどうすればいいでしょうか
=ABC, など
やりたいことがわかりづらいので、
たとえば元のcsvにはどう書かれていて、それをどう変換したいのか、ということを
もう少し具体的に説明してください。
回答1件
あなたの回答
tips
プレビュー