- 締切済み
VBAでの構築の質問
VBAの初心者ですが、データの抽出をしたいと考えています。 フォルダの中に、複数のテキストファイル形式のデータがあり、 その中にあるファイル毎の一部データのみ抽出できないかと考えております。 元データ(1)(テキストファイル形式) 10行目にあるデータ A TOKYO 20行目にあるデータ 100 200 1000 2000 (データの間には、スペースがあります。) 元データ(2)(テキストファイル形式) 10行目にあるデータ B Fukuoka 20行目にあるデータ 300 400 3000 4000 (データの間には、スペースがあります。) 編集後のデータは、それぞれのテキストデータ ・10行目データの2番目の抽出 ・20行目データの2番目の抽出 ・20行目データの4番目の抽出 を抽出できないかと考えています。 編集後データ(エクセルファイル形式に出力)は、下記のような感じできないかと考えてます。 (A列) (B列) (1行目)TOKYO Fukuoka (2行目)200 400 (3行目)2000 4000 皆さんからのご回答、 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- hallo-2007
- ベストアンサー率41% (888/2115)
VBAの応用として必要なのは 1、テキストファイルの読み込 と 2、指定したフォルダ内のファイルの指定では ないでしょうか。 1については http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110.html 等を参考にしてください。 2について、DIR関数を使用してみました。方法はいくつかあります。 dir関数で検索してみてください。 サンプルですが Sub ボタン1_Click() Dim intFF As Integer Dim strREC As String Mypath = "テキストファイルのあるフォルダーへのパス" Filename = Mypath & Dir(Mypath & "*.txt") RETU = 1 intFF = FreeFile Do While Len(Filename) > Len(Mypath) Open Filename For Input As #intFF GYO = 1 Do Until EOF(intFF) Line Input #intFF, strREC If GYO = 10 Then Temp = Split(strREC, " ") Cells(1, RETU).Value = Temp(1) End If If GYO = 20 Then Temp = Split(strREC, " ") Cells(2, RETU).Value = Temp(1) Cells(3, RETU).Value = Temp(3) End If GYO = GYO + 1 Loop Close #intFF Filename = Mypath & Dir() RETU = RETU + 1 Loop End Sub こんな感じではないでしょうか。
- toshih2000
- ベストアンサー率22% (120/541)
何が判らなくて、質問されているのかは判断できませんが、 ・フォルダー操作やファイル操作は、FileSystemObject を使うと思いますので、 自分で調べてください。検索すればサンプルを含めて沢山見つかります。 ・スペースで区切られたデータの分割は Sprit 関数を使えば簡単です。 ・指定した位置のセルへのデータ書き込みは worksheets("sheet1").cells(aa,bb).value = zzzz という感じでできます。(aa=行番号, bb=列番号) このくらいの知識があれば、できるでしょう。 ガンバってみてください。