- ベストアンサー
Excel2000で複数のテキストファイルを自動で開きたい
タイトルのとおりなのですが、下のようなテキストファイルが数十個あります。 10 ABC 0.123 0.456 0.789 20 ABC 1.123 1.456 1.789 すべて2、3行です。 これを1つの表にまとめたいと思っています。 フォルダにあるファイルすべてを開き、Excelのシートに コピーさせるようなマクロは作ることができるのでしょうか? ちなみに、ファイル名は一定ではありません。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Excelのマクロで行う場合なのですが、フォルダー内のファイル一覧をとるにはVBAの知識が必要かと思います。よって、いまいちかもしれませんが、マクロを使わずにできる方法を説明します。 1.MSDOSプロンプト(WindowsXPとかだとコマンドプロンプト)で目的のフォルダーに移動(CDコマンドを使用)し、"dir /b > list.bat"でそのフォルダーにあるファイルの一覧を吐き出す。 2.list.batをメモ帳等で開きファイルの先頭に"Copy "と記述。改行文字を"+" を置換。置換後、ファイルの最後にできる"+"を" [ファイル名]"に置換。 (ファイルの中身はこんな感じ→「Copy [file1]+[file2]+...+[fileN] [ファイル名]」) 3.list.batをクリックすると全てのファイルが結合されたファイル[ファイル名]が作成されますのでこれをExcelで開けば1つの表になると思います。 注)Copyの後などスペースが入っていますので注意してください。 結構手間がかかってしまって、現実的ではないかと思いますが、 ご了承ください。なにか質問等があればご一報ください。もし、VBAのサンプルが欲し場合にもご一報ください。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
1つのファイルが終わると、次のファイル名を聞いてきますので、次々入力してください。終わりのファイルの次はendと入力してください。それで終了し、エクセルのシートに累積されます。 (下記で質問者のケースに合わせて変えるべきところ) (1)c:\My Documents\の部分 (2)Input #1, a, b, c, d項目数にあわせて増減してください。今は4項目の例です。5項目ならInput #1, a, b, c, d,eとしてください。 (3)Cells(i, 4) = dなどのところ。これも項目の数に合わせて増減してください。 下記でiはエクセルの第i行目を指します。 (GoToが出て来たり、Whileも使わず、字下げも不充分で (Object).Methodも使っておりませんが、極く初等的にやりました。識者にはお許し下さい。)一応テスト済み。 ---------------- Sub test01() i = 1 p01: fn = InputBox("ファイル名=") If fn = "end" Then Exit Sub Open "c:\My Documents\" & fn For Input As #1 p03: If EOF(1) = -1 Then GoTo p02 Input #1, a, b, c, d Cells(i, 1) = a Cells(i, 2) = b Cells(i, 3) = c Cells(i, 4) = d i = i + 1 GoTo p03 p02: Close #1 GoTo p01 End Sub
お礼
imogasiさん、回答ありがとうございました。 お礼が遅れてすみませんでした。 VBで関数まで作っていただいて、ありがたいです。 試してみます。 また何かあればよろしくお願いします。
お礼
kazuho_gooさん、早速のアドバイスありがとうございました。 テキストを全部連結させて、Excelに読み込むという方法ですね。 丁寧に教えてくださってとても分かりやすいです。 これぐらいの手間ならなんでもないですので(^^; やってみます! またなにかあればよろしくおねがいします。