複数のテキストファイルが同一フォルダ内にあります。
記載内容はバラバラです。
hoge1.txt
hoge2.txt
hoge3.txt
...
このテキストファイルを下記のような条件でエクセルに出力したいと考えています。
ファイル名(hoge1.txt)を取得・出力
テキスト内から「Surname」という文字列を検索し、「Surname」の次の行(例;TANAKA)を取得・出力
テキスト内から「Middle name」という文字列を検索し、「Surname」の次の行を取得・出力
...
ファイル名(hoge2.txt)を取得・出力
テキスト内から「Surname」という文字列を検索し、「Surname」の次の行(例;TANAKA)を取得・出力
テキスト内から「Middle name」という文字列を検索し、「Middle name」の次の行(例:ABC)を取得・出力
...
出力のイメージは以下の通りです。
hoge1.txt
TANAKA
ABC
...
hoge2.txt
...
テキストエクセルにコピペして、関数で検索・出力を行っているのですが、
量が多くて困っています。
マクロがほとんど書けないので、ご教示いただければ幸いです。
よろしくお願いします。
ちなみに、1ファイル分の実行は以下のように組んでみました。
これを複数ファイルに出力セルを下にずらしながら適応していければよいかと考えています。
VBA
1Sub PasteFromCSV() 2 Const CSV_FILE = "C:\hoge1.txt" 3 Dim ReadWBk As Workbook 4 Dim WriteWBk As Workbook 5 Dim WriteSht As Worksheet 6 Dim Rng As Range 7 8 Set WriteWBk = ActiveWorkbook 9 Set WriteSht = WriteWBk.ActiveSheet 10 11 Set ReadWBk = Workbooks.Open(CSV_FILE) 12 13 'ここから 14 Dim ReadSht As Worksheet 15 Dim rngStart As Range '開始セル 16 Dim rngEnd As Range '終了セル 17 18 Set ReadSht = ReadWBk.Worksheets.Item(1) 19 20 Set rngStart = ReadSht.Range("A:A").Find("Surname") 21 Set rngEnd = ReadSht.Range("A:A").Find("Middle name") 22 23 Range(rngStart, rngEnd).Copy 24 'ここまでデータの取り方検討中 25 26 WriteSht.Range("B1").PasteSpecial xlPasteValues, xlPasteSpecialOperationNone, False, False 27 28 ReadWBk.Close 29 30 Set ReadWBk = Nothing 31End Sub 32
対象のテキストファイルの内容の一例です。
hoge1.txt
219809
Surname
TANAKA
Middle name
AA
Given Name
hogehoge
※Surnemaなどキーとなる文字は全てのファイルに必ずしも含まれるわけではありません。