色彩検定1級を取得する魅力を紹介♪

ディスクトップに、ひとつのフォルダがあるとします。

そのフォルダを開くと、

フォルダ1、フォルダ2、フォルダ3、フォルダ4とこのような感じでフォルダがあり、さらに各フォルダには、複数のテキストファイルが入っています。

現在、エクセルのA列にフォルダ名、B列にtxtファイル名、C列にtxtファイルの内容を手動で貼りつけるといった作業を行っているのですが、数が多いためしんどいです。

何か楽にできる方法はないでしょうか?

よろしくお願いいたします。

gooドクター

A 回答 (2件)

こういう手作業では面倒なものはVBAでやるほか仕方がない。

そういうことを認識した上で、今までVBAを少しやった人なら
WEB記事を調べて、コードを作れるでしょう。 今までやったこともないなら丸投げの、回答コピペになるが、その後の「質問者に合わせた、対処(修正)が出来ず無理だろう。
VBAでは無いがFSOを使うほうが良いでしょう。Dir関数を使うというのも在るが
(1)フォルダ内のファイル名を順次掴む。
テキストファイル以外があるなら、拡張子で篩(ふるい)に掛ける。
(2)そのファイル名でそのテキストファイルを開き、レコードを終わりまで1つずつ、読む
 エクセルでは列に当たる項目に分離して、その行にデータをセット刷る
次のレコードを読む
(3)終わると、次のファイルを掴んで同じ処理をする。
そのフォルダで尽きた場合は、次のフォルダに行く
ーー
フォルダの数はきまっているのか。すなわち名前は(列挙的で)決っているのか?>とこのような感じで、とぼかされると判らない。
親フォルダの下にあるフォルダの中の(テキストファイル)ファイルをすべて対象にするのか。
これらのループ関連を図示して整理し、コードに取り掛かれば、勉強するコードのタイプとしては2,3類型だ。
外から
(1)親フォルダのループ
(2)フォルダのファイルを掴むループ
(3)ファイルのレコードを読み処理するループ
(4)シートの各列にデータをセットするループ
などがネストすることになろう。
データ実物が無いのでコードを作成してテストできない。本来質問者がこつこつやるべきことだ。
ーー
http://itpro.nikkeibp.co.jp/article/COLUMN/20060 …
に類したものが沢山在る
Googleで「FSO フォルダ内ファイルを掴む」「FSO フォルダ ファイル」などで照会。
ーー
テキストファイルを読む
http://www.ken3.org/vba/backno/vba029.html  など
テキストファイルもCSV始め色々あるのに質問に書いてない。認識が甘い。そういうことだと、回答者もコードはかけない。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

いろいろ教えて頂きありがとうございます。

ちょっと自分には、敷居が高く理解できません。

今回のケースで具体的なVBAを教えて頂けないでしょうか?

よろしくお願いします。

お礼日時:2011/10/11 10:58

マクロを作ってみました。




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
    • good
    • 1
この回答へのお礼

回答ありがとうございました。

今、試してみたのですが、私の思っているのとは違うようです。

各カテゴリをシート別に分けるのではなく、あくまでも、シート1のA列にカテゴリをB列にはテキストファイルの名前を、そして、C列にはテキストファイルの中身を入れたいです。

また、テキストファイルには改行が入っています。

1つのセルに改行を含めた文章を入れたいです。

また、フォルダの数も多いので、いちいちマクロに書くのが面倒です。

せっかく作って頂いたのですが、申し訳ありません。

お礼日時:2011/10/10 18:25

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

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング