前提・実現したいこと
vbaでフォルダの中にある複数のログファイルから特定の文字を検索し、
その文字がある行をその文字からエクセルに書き出すというツールを作成していますが、特定の文字列を検索してエクセルに書き出すという処理が
上手くできません。
どなたかご教授いただけないでしょうか。
下記にコードを記載しますので
コードの下部あたりの【任意行の値を取得する】に
付け加えていただければと思います。
お手数ですがお願いいたします。
【以下詳細条件】
検索したい文字:UR
ログに記載されている行:・( 711,36 ): 2021/03/11 10:23:36.824[PC->]T0S1T1UR00571061DT0UI0003RP01PI1000000000PM山田 太郎
エクセルに書き出したい文字:UR00561059DT0UI0001RP01PI9999999999PM山田 太郎
該当のソースコード()
''''''''''''''''''フォルダ選択処理''''''''''''''''''' '指定フォルダの全テキストの任意行を取得 Sub GetAllTextData() 'フォルダ指定用のダイアログを表示 With Application.FileDialog(msoFileDialogFolderPicker) 'カレントディレクトリを指定 .InitialFileName = ThisWorkbook.Path '設定しなかったら終了 If .Show = False Then Exit Sub '設定したフォルダを表示 Dim Fname Fname = .SelectedItems(1) End With ''''''''''''''''''フォルダ選択処理完了''''''''''''''' ''''''''''''''''''ログファイル選択処理''''''''''''''''''' '参照設定 Dim FSO As Object, Folder As Variant, File As Variant Set FSO = CreateObject("Scripting.FileSystemObject") Dim FilePath As Variant ReDim FilePath(1 To 100) As Variant '指定フォルダ内の.logファイルを探索 i = 0 For Each File In FSO.GetFolder(Fname).Files If InStr(File.Name, ".log") > 0 Then i = i + 1 FilePath(i) = File.Path 'ファイルのフルパスを取得 End If Next '配列の大きさは状況に応じ変更 '現コードは100テキストファイルを読み込む配列 Dim Hozon, GetData As Variant ReDim GetData(1 To 100, 1 To 100) As Variant '全テキストファイルの任意行のデータを取得 m = 0 For k = 1 To UBound(FilePath, 1) 'テキストファイルが存在する場合に実行 If IsEmpty(FilePath(k)) = False Then '保存する配列を空にする ReDim Hozon(1 To 100, 1 To 100) As Variant ''''''''''''''''''ログファイル選択処理完了''''''''''''''' ''''''''''''''''ログファイル内容保存処理''''''''''''''''' 'テキストを開いて配列にデータを保存 Open FilePath(k) For Input As #1 i = 0 'テキストをすべて取得 Do Until EOF(1) Line Input #1, buf i = i + 1 Close #1 ''''''''''''''''ログファイル内容保存処理完了''''''''''''' '▼取得したいデータに応じ変更してください '任意行の値を取得する End Sub
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー