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
の形でファイルのAをBに置換しているのですが、
Aの内容に部分一致があった場合、置換内容が間違ってしまいます。
例:セルA1:setenv MUSUU00100とB1:set MUSUU0010W
セルA1:setenv MUSUU0010とB1:setenv MUSUU0010W
など
これらを部分一致ではなく完全一致で置換する方法はないでしょうか
> Aの内容に部分一致があった場合、置換内容が間違ってしまいます。
これの具体例(buf、A1、B1 の値と、間違った置換結果、希望の置換結果 )をいくつか挙げてもらえませんか。
回答3件
あなたの回答
tips
プレビュー