- 締切済み
複数のテキストファイルをエクセルに貼りつける方法
ディスクトップに、ひとつのフォルダがあるとします。 そのフォルダを開くと、 フォルダ1、フォルダ2、フォルダ3、フォルダ4とこのような感じでフォルダがあり、さらに各フォルダには、複数のテキストファイルが入っています。 現在、エクセルのA列にフォルダ名、B列にtxtファイル名、C列にtxtファイルの内容を手動で貼りつけるといった作業を行っているのですが、数が多いためしんどいです。 何か楽にできる方法はないでしょうか? よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
こういう手作業では面倒なものはVBAでやるほか仕方がない。そういうことを認識した上で、今までVBAを少しやった人なら WEB記事を調べて、コードを作れるでしょう。 今までやったこともないなら丸投げの、回答コピペになるが、その後の「質問者に合わせた、対処(修正)が出来ず無理だろう。 VBAでは無いがFSOを使うほうが良いでしょう。Dir関数を使うというのも在るが (1)フォルダ内のファイル名を順次掴む。 テキストファイル以外があるなら、拡張子で篩(ふるい)に掛ける。 (2)そのファイル名でそのテキストファイルを開き、レコードを終わりまで1つずつ、読む エクセルでは列に当たる項目に分離して、その行にデータをセット刷る 次のレコードを読む (3)終わると、次のファイルを掴んで同じ処理をする。 そのフォルダで尽きた場合は、次のフォルダに行く ーー フォルダの数はきまっているのか。すなわち名前は(列挙的で)決っているのか?>とこのような感じで、とぼかされると判らない。 親フォルダの下にあるフォルダの中の(テキストファイル)ファイルをすべて対象にするのか。 これらのループ関連を図示して整理し、コードに取り掛かれば、勉強するコードのタイプとしては2,3類型だ。 外から (1)親フォルダのループ (2)フォルダのファイルを掴むループ (3)ファイルのレコードを読み処理するループ (4)シートの各列にデータをセットするループ などがネストすることになろう。 データ実物が無いのでコードを作成してテストできない。本来質問者がこつこつやるべきことだ。 ーー http://itpro.nikkeibp.co.jp/article/COLUMN/20060120/227645/?rt=nocnt に類したものが沢山在る Googleで「FSO フォルダ内ファイルを掴む」「FSO フォルダ ファイル」などで照会。 ーー テキストファイルを読む http://www.ken3.org/vba/backno/vba029.html など テキストファイルもCSV始め色々あるのに質問に書いてない。認識が甘い。そういうことだと、回答者もコードはかけない。
- yucco_chan
- ベストアンサー率48% (828/1705)
マクロを作ってみました。 Sub Sample() Dim buf As String Dim buf2 As String Dim cnt As Long Dim lp As Long Dim lr As Long Dim f(4) As String Dim Path As String Dim st(4) As String f(1) = "C:\フォルダ1\" 'フォルダ1は、実際のフォルダ名に修正する f(2) = "C:\フォルダ2\" f(3) = "C:\フォルダ3\" f(4) = "C:\フォルダ4\" st(1) = "Sheet1" 'Sheet1にフォルダ1の内容を貼り付ける st(2) = "Sheet2" st(3) = "Sheet3" st(4) = "Sheet4" For lp = 1 To 2 lr = 1 cnt = 0 Path = f(lp) buf = Dir(Path & "*.txt") Do While buf <> "" cnt = cnt + 1 Worksheets(st(lp)).Cells(lr, 1) = f(lp) Worksheets(st(lp)).Cells(lr, 2) = buf Open Path & buf For Input As #1 Do Until EOF(1) Line Input #1, buf2 Worksheets(st(lp)).Cells(lr, 3) = buf2 lr = lr + 1 Loop Close #1 buf = Dir() Loop Next lp End Sub
お礼
回答ありがとうございました。 今、試してみたのですが、私の思っているのとは違うようです。 各カテゴリをシート別に分けるのではなく、あくまでも、シート1のA列にカテゴリをB列にはテキストファイルの名前を、そして、C列にはテキストファイルの中身を入れたいです。 また、テキストファイルには改行が入っています。 1つのセルに改行を含めた文章を入れたいです。 また、フォルダの数も多いので、いちいちマクロに書くのが面倒です。 せっかく作って頂いたのですが、申し訳ありません。
お礼
回答ありがとうございます。 いろいろ教えて頂きありがとうございます。 ちょっと自分には、敷居が高く理解できません。 今回のケースで具体的なVBAを教えて頂けないでしょうか? よろしくお願いします。