【LOGファイル名】
Example_20120601_小_001.LOG
Example_20120601_小_002.LOG
Example_20120601_小_003.LOG
・・・・・
Example_20120601_小_026.LOG
Example_20120601_大_027.LOG
・・・・・
・・・・・
Example_20120601_大_049.LOG
Example_20120601_大_050.LOG
LOGファイルの中身は以下のようにカンマ区切りで
「日付時刻」「お客様番号」「性別コード」「エラーコード」を1行(1レコー ド)として、複数行(複数レコード)で構成されています。
【LOGファイルの中身】
2012/06/01 02:56:03,12345-67-890,0,0
2012/06/01 02:56:16,12345-67-890,0,0
2012/06/01 02:56:22,12345-67-890,0,0
2012/06/01 02:57:09,987-65-432,0,0
2012/06/01 02:58:03,987-65-432,0,0
2012/06/01 03:01:12,11111-22-333,0,0
2012/06/01 03:01:22,11111-22-333,0,0
全 LOGファイル内の「お客様番号」の「3」と「5」を
下記のように全て「○」へ変換するための
WSH(エクセルVBAでも可)を教えてください。
【WSH処理後のLOGファイルの中身】
2012/06/01 02:56:03,12○4○-67-890,0,0
2012/06/01 02:56:16,12○4○-67-890,0,0
2012/06/01 02:56:22,12○4○-67-890,0,0
2012/06/01 02:57:09,987-6○-4○2,0,0
2012/06/01 02:58:03,987-6○-4○2,0,0
2012/06/01 03:01:12,11111-22-○○○,0,0
2012/06/01 03:01:22,11111-22-○○○,0,0
ExcelのVBAで作成しました。
※必ずデータのバックアップを取ってからご使用ください。
※変換後のデータに間違いがないか、よくご確認ください。
※VBAの最初の行でLOGファイルを格納するフォルダのパスを指定しています。
パスは適宜変更してください。
※上記フォルダには処理を行うLOGファイルのみ保存し、
別途「done」という空のフォルダを作成してください。
「done」フォルダに処理結果のファイルを作成します。
以下、VBAです。不明な点がありましたら、コメントでお知らせください。
Sub Macro1()
ChDir "C:\Documents and Settings\USER\デスクトップ\VBA\LOG"
dd = Dir("*.LOG")
Application.DisplayAlerts = False
Do Until dd = ""
Workbooks.OpenText Filename:=dd, Comma:=True, _
FieldInfo:=Array(Array(1, 2), Array(2, 2), Array(3, 1), Array(4, 1))
Columns("B:B").Select
Selection.Replace What:="3", Replacement:="○", LookAt:=xlPart
Selection.Replace What:="5", Replacement:="○", LookAt:=xlPart
ActiveWorkbook.SaveAs Filename:="done\" & dd, FileFormat:=xlCSV
ActiveWorkbook.Close
dd = Dir()
Loop
Application.DisplayAlerts = True
End Sub
WSHでばっくり組んで見ました
動かしてないから細かいミスがあるかも
該当フォルダ配下にcnvというサブフォルダ作成して、元のフォルダに格納されているファイル全部読んだ上で、変換結果を同一ファイル名でサブフォルダに格納していきます
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
'対象のフォルダ
Dim FolderName
Dim FolderNameCnv
Dim readData
Dim arrReadData
Dim convreadData
FolderName ="c:\temp"
FolderNameCnv = Folder_Name & "\cnv"
Set objFolder = fs.GetFolder(FolderName)
'変換したファイルを格納するフォルダ
if fs.FolderExists(FolderNameCnv)
fs.CreateFolder(FolderNameCnv)
end if
'全部のファイルをループする
For Each objFile In objFolder.Files
Set f1 = fs.OpenTextFile( FolderName & "\" & objFile.Name)
Set f2 = fs.CreateTextFile(FolderNameCnv & "\" & objFile.Name, True)
readData=""
Do While f1.AtEndOfStream <> True
readData = f1.ReadLine
arrReadData = split(readData,",")
arrReadData(1) = replace(arrReadData(1),"3","○")
arrReadData(1) = replace(arrReadData(1),"5","○")
convreadData = arrReadData(0) & "," & arrReadData(1) & "," & arrReadData(2) & "," & arrReadData(3)
f2.WriteLine convreadData
Loop
f1.Close
f2.Close
Next
補足
2012/08/22 12:55:13指定したフォルダ内の拡張子がLOGのファイルをすべて処理します。
まずは2~3個のファイルで正常に動作するか試してください。