重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

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

皆さんからのご回答、
よろしくお願いいたします。

A 回答 (2件)

VBAの応用として必要なのは


1、テキストファイルの読み込 と
2、指定したフォルダ内のファイルの指定では
ないでしょうか。
1については
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …
等を参考にしてください。
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

こんな感じではないでしょうか。
    • good
    • 0

何が判らなくて、質問されているのかは判断できませんが、



・フォルダー操作やファイル操作は、FileSystemObject を使うと思いますので、
 自分で調べてください。検索すればサンプルを含めて沢山見つかります。

・スペースで区切られたデータの分割は Sprit 関数を使えば簡単です。

・指定した位置のセルへのデータ書き込みは
 worksheets("sheet1").cells(aa,bb).value = zzzz
 という感じでできます。(aa=行番号, bb=列番号)

このくらいの知識があれば、できるでしょう。
ガンバってみてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!