人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

以下のようなファイル名のLOGファイルが50個存在しています。

【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

●質問者: Pooh_san
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● gong1971
●250ポイント

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


gong1971さんのコメント
補足 指定したフォルダ内の拡張子がLOGのファイルをすべて処理します。 まずは2?3個のファイルで正常に動作するか試してください。

2 ● 紅雷
●250ポイント

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

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ