• 締切済み

大量のテキストファイルを一つのエクセルファイルに

大量のテキストファイル(以下「テキスト」とします)を、そのテキストを保存しているフォルダ名がわかるように一つのエクセルファイルに書き込みたいと考えています。 例えば「A」というフォルダの中にフォルダ名「1」~「1000」の1000個のサブフォルダがあり、その1000個のフォルダの中にはそれぞれ3~4つのファイルが保存されています(ファイルの種類はバラバラ)。但し、1000個のフォルダには最低でも1つのテキストが必ず保存されており、そのテキストのファイル名はすべて同じです。これら同じファイル名の1000個のテキストを、保存されているフォルダ名がわかるように一つのエクセルファイルの一つのシートの上から順番に書き込みたいのです。 それぞれのテキストは、1行に1情報、改行が10~20ほど、ファイルサイズは1~2KBほどです。エクセルのバージョンは2010です。 書き込み方は、例えばエクセルファイルのSheet1のA列にフォルダパス等のフォルダ名がわかる情報を、B列にテキストの内容を書き込むといった感じで、簡単なデータベースのテーブルを作るイメージです。 上記を実現できる方法はありますでしょうか? もし何らかのプログラミングが必要であれば、当方ほぼ未経験ですので具体的に例示して頂けると大変ありがたいです。 よろしくお願い致します。

noname#208843
noname#208843

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

ファイル数が少し多いので、手作業ではいやになるだろう。 >何らかのプログラミングが必要であれば 質問にぴったりの(市販、出来合いの)ソフトはないから、プログラムを使わざるを得ないだろう。 ーー それにプログラムでやるにしても、下記のステップを踏んでやることになるのではないか。 質問者は、VBAやVBScriptを使ったの経験がないらしいので、できないだろう。 あきらめることだ。ファイルやフォルダをたくさん作ると困難が待ち受けている。 (1)Aの下のフォルダ名をエクセルシートに出す     Aに直接ぶら下がるファイルはあるのか、ないものとしてよいか。 http://officetanaka.net/excel/vba/tips/tips95.htm Dir関数でサブフォルダを取得する。 ーー (注) VB系では (A)VBのDIRを使う方法 (B)VBScriptを使う方法がある。 ーー (2)その表を基に、その各フォルダ(Aからは実はサブフォルダ)の中のファイル名をエクセルシートの各行に打ち出す。    テキストファイル以外はないのか。テキストファイル以外はスキップするのか。 http://officetanaka.net/excel/vba/file/file07.htm ファイルの一覧を取得する (3)フルパス名+対象ファイル名がシートに出来上がれば、そのファイル名を含む、フルパスをシート名からとって 、ファイル名によって次の段階でオープンする。   以上は実情把握と準備段階である。 ーー  いよいよファイルをオープンして中身を見る段階。 もちろん1ファイルの作業が終わればファイルクローズ。 (4)ファイルをオープンする。 エクセルの「区切り位置」の機能を使って同行の複数セルに位置付けることができる場合もあろう。 http://officetanaka.net/excel/vba/file/file08b.htm のsample2 ほかにLineInputで1レコードごと読み込んで、SPLIT関数で項目に(各セル用に)分離する方法もある。 ーーー  最終的に望みのものに編集する。 (5)セルデータを編集する必要がないか。あればどう編集するか。 >それぞれのテキストは、1行に1情報、改行が10~20ほど、ファイルサイズは1~2KBほどです がどういう状態かわかりづらいし、プログラムで対処を取れるかどうか。 ーー >当方ほぼ未経験ですので具体的に例示して 全部丸投げで、このコーナーの趣旨に反する。プログラムの下請けに応じるコーナーではないはず。 WEBには質問の部分部分になら似たケースで近いコード例は見つかると思う。有名な処理タイプと思う。 興味とやる気があれば、まず調べまくることかな。 しかし、まったくプログラム未経験では説明しきれない。   ーーー またコンピュター界は、UNIX、Linux系のこと(経験者)と、MsのOffice系の考えとあるので 注意すること。 エクセルのシートに出したいということなので、ややMsのOffice系の処理(VBAなど)が近いのかなと思う 次第です。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

ご相談に具体的に書かれていない点としては「Aフォルダ」が具体的にどこにあるのかと,「テキストファイル」が具体的にどんな拡張子がくっついたファイルなのか,それから「1つのテキストファイルには10~20行ぐらい情報がある」のをエクセル上に具体的にどんな具合に展開したいのか不明,の3点ですね。 「全部一緒なテキストのファイル名」も具体的なファイル名が不明ですが,いずれにしても拡張子の情報は必須です。 そういう情報提供が無いと,回答者は勝手に想像で間違った回答をしちゃうかもしれませんし,自称シロートさんのご相談者さんも,寄せられた回答のどこをどう直したらいいのか分からないでしょ? 手順: まっさらのエクセルブックを用意する Aフォルダの「中」(=「1」から「1000」フォルダの並び)にブックを保存する ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub macro1()  dim myFile as string  dim FSO as object  dim myFolder as variant  dim buf as string  myfile = "全部一緒のテキストファイル名.txt" ’自力で正しく修正  cells.clearcontents  range("A1:B1") = array("folder", "item")  set fso = createobject("Scripting.FileSystemObject")  for each myfolder in fso.getfolder(thisworkbook.path).subfolders   open myfolder & "\" & myfile for input as #1   do until eof(1)    line input #1, buf    if buf <> "" then     range("A65536").end(xlup).offset(1) = myfolder.path     range("A65536").end(xlup).offset(0, 1) = buf    end if   loop   close #1  next  set fso = nothing end sub ファイルメニューから終了してエクセルに戻る ALT+F8を押してマクロを実行する 以上です。

noname#208843
質問者

お礼

回答頂き、ありがとうございます。 ご指摘のありました、具体的でない点ですが、 ・「Aフォルダ」の場所はDドライブの直下 ・「テキストファイル」の拡張子は「txt」 ・「エクセル上に具体的にどんな具合に展開したいのか」 → A列にフォルダパス、テキストファイルの各1行をB列の各1行に書き込む(回答頂いた手順で得られる結果の通り) ・「全部一緒なテキストのファイル名」は「リスト.txt」 です。 おかげさまで、ほぼ希望通りの結果が得られました。ですが、「リスト.txt」の中にはUnicode形式で保存されたものが含まれており(これも質問時に漏れていました、申し訳ありません)、それらの内容は文字化けしてエクセルに書き込まれます。 文字化けを回避する方法はないでしょうか?

  • shintaro-2
  • ベストアンサー率36% (2266/6244)
回答No.2

それぞれのテキストファイルの末尾に改行記号があれば、 dos窓でできます。 まず、フォルダがEドライブのaaaという名前だとして dos窓で dir:e:\aaa\*. > e:\aaa\dir_list.txt と入力すれば、 (\は半角の円記号です) サブフォルダ名が入ったdir_list.txtというファイルを フォルダaaaに作成することができます。 目的のテキストファイルがbbb.txtだとすると エクセル上で e:\aaa\1\bbb.txt+e:\aaa\2\bbb.txt+・・・・・・ > e:\aaa\all_bbb.txt というデータを作成し それをdos窓で入力すれば bbb.txtを1つに連結したall_bbb.txtというファイルを フォルダaaaに作成することができます。 ファイルの内容が表示される必要が無ければ フォルダ名の横に =hyperlink("e:\aaa\1\bbb.txt","サブフォルダ1") とでも入力しておけば、ハイパーリンクで内容の確認自体は可能です。

  • STICKY2006
  • ベストアンサー率29% (1536/5269)
回答No.1

>もし何らかのプログラミングが必要であれば、当方ほぼ未経験ですので具体的に例示して頂けると大変ありがたいです。 変な指摘ですが、プログラミングやるような人らにこの一言言うと、「じゃあ自分で勉強してね♪」って言われるのがオチなんで頭の片隅にでも置いといてみてください。(まぁ、プログラミングに限らず、他の業界でもそんな場合はあるでしょうが。 >上記を実現できる方法はありますでしょうか? 方法の検討だけ。 ・grep機能のあるテキストエディタで、正規表現を使用し、文字が存在するファイルを対象として一覧表示をさせ、その結果を加工してエクセルに貼り付ける。 grep機能 詳しくはググってね。文字を検索する機能です。 テキストエディタ テキストを打ちまくれるツールです。無料なものがいっぱいネットで落ちてるので探してみてね。grep機能が付いているものを探しましょう。 正規表現 「半角ドット」が、文字が存在するかどうか?の検索で使えると思います。詳しくはググってね。 grep結果の表示で、ファイルのパスと検索した文字列を合わせて表示するようなものならば(というか、そうでなきゃgrepである意味がないから、そうなってると思うが)そのままコピペして真ん中で分割すれば使えるのではないかと。

関連するQ&A

  • エクセルのマクロでHTMLファイルを出力するには

    エクセルのマクロでHTMLファイルを出力するには 下記アドレスのソースをもとに、エクセルでHTMLファイルを複数出力できたらと考えています。 内容は、sheet1のA列にテキストが入っていると、それを任意のファイル名(ダイアログ)でテキストとして保存が可能になるソースです。 ttp://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_040.html 出来ればこれを以下のように変えたいと考えております。 ●シート名「1」~「50」の計50シートのA列のテキストを、 それぞれのシート名+任意の文字列で保存をしたい。 ●ファイル名の任意の文字列については、シート内のセル (例:sheet1のA4)に記載されている内容としたい。 ●ファイル形式は、HTML形式で保存をしたい。 ●保存先のフォルダは任意のディレクトリ内 (例:C:\Documents and Settings\All Users\デスクトップ)の配下に、 シート内のセル(例:sheet1のA3)に記載されている内容を フォルダ名として、新規に作成し、その中に保存したい。 恐れ入りますが、ご回答よろしくお願いいたします。

  • エクセルでフォルダとファイルを作りたい

    お世話になります。 エクセル2007で質問です。 下記のような表をエクセルで作り、A列の名称でフォルダを作り、 そのフォルダの中にすべて同じファイル名のテキストファイルを作り、 その内容をB列の文字としたいのですが、マクロなどでの作成方法を教えてくだい。 A列 B列 a1  ああああああ a2  いいいい a5  かかかかか いままで使っていたマクロはテキストのファイル名がすべてバラバラだった ので同じフォルダ内に書き出していましたが、変更があり同じファイル名で内容が 違うデータが必要となってしまいましたので、違う名称のフォルダの中に、 同じ名称のテキストデータを格納したいと思っています。 テキストデータの名称は何でもいいです。 作成するデータの数は決まっていなく、最大で1000くらいあります。 ぜひ、ご教授お願いします。

  • (VBA)フォルダの中の複数のテキストファイルをエクセルに取り込みたい

    フォルダの中に複数のテキストファイルがあります。 それをVBAで1シートに1テキストファイルづつで取り込んで(区切り文字(#)、列のデータ形式(文字列)を指定して)作成済みのマクロを実行し、出力させたいのですが。。 データが大きいので5シートで1つのファイルにしたいです。フォルダの中にはテキストファイルが100ほどあるので、結果、エクセルファイルが20できればいいのですが。。 できればデスクトップに新しいフォルダが作成されてその中に出力されていくようにしたいです。 お力を貸してください。よろしくお願いします。

  • 複数のテキストファイルをエクセルに貼りつける方法

    ディスクトップに、ひとつのフォルダがあるとします。 そのフォルダを開くと、 フォルダ1、フォルダ2、フォルダ3、フォルダ4とこのような感じでフォルダがあり、さらに各フォルダには、複数のテキストファイルが入っています。 現在、エクセルのA列にフォルダ名、B列にtxtファイル名、C列にtxtファイルの内容を手動で貼りつけるといった作業を行っているのですが、数が多いためしんどいです。 何か楽にできる方法はないでしょうか? よろしくお願いいたします。

  • 1行単位のデータをテキストファイルに保存するマクロ

    エクセルに入力済みの連続したデータを1行単位で以下のような内容でテキストファイルを作成し、 かつテキストファイル名を、セルに入力されている文字を使って保存するマクロを作りたいのですが、 どのようにしたら良いのでしょうか?よろしくお願いします。 *エクセルシート (ファイル名:aaa.xls シート名:sheet1 エクセルシートがあるフォルダ名:yyy) _|A |B |C | 1|x |y |z | 2|a1|a2|a3| 3|b1|b2|b3| *テキストファイル(保存するフォルダ名:zzz) ---テキストファイルの内容(ファイル名:a1.txt) x a1 y a2 z a3 --- ---テキストファイルの内容(ファイル名:b1.txt) x b1 y b2 z b3 --- エクセルはExcel2000でWindows2000を使用しております。

  • エクセルVBAでテキストを出力したい

    エクセルVBAでテキストを出力したいのですが、 やり方がわからないので教えてください。 仮にSheet2のA列に文章があるとして、 シート全体を1つのテキストファイルとして出力し、 ファイル名をSheet1のA1セルにしたいです。 同じような質問もあるのですが、ファイル名に関しては、 ちょっと見当たらなかったので質問しています。

  • エクセルVBAでテキストファイルにして保存する方法

    エクセル「Sheet2」のA列、C列、D列にそれぞれ100個の文字列が入力されています。 B列は空欄になっています。 (作業内容) C列とD列のデータを結合して、B列に入力 A1~B100のデータを1つのテキストファイルとして保存する。 ファイル名はその都度指定する。 よろしくお願い申し上げます。

  • 複数のエクセルファイルを1つのエクセルファイルのシートにコピーをマクロ

    複数のエクセルファイルを1つのエクセルファイルのシートにコピーをマクロで行いたい。 マイドキュメントのデーターというフォルダ内に エクセルファイルA(シート名みかん) エクセルファイルB(シート名りんご) エクセルファイルC(シート名バナナ) エクセルファイルD(シート名ぶどう) エクセルファイルE(シート名いちご) があります。 雛形は同じです。すべてA列~F列までデータが入っています。 行数はファイルによって違います。 また毎日自動で上書き更新され、毎日行数が変わります。 エクセルファイルZがあります。シートが7個あります。 ・変換 ・集計 ・みかん ・りんご ・バナナ ・ぶどう ・いちご エクセルファイルZを開きます。(各シートには昨日のデータが貼り付けてあります。) マイドキュメントのデーターフォルダも開いておきます。 エクセルファイルZにおいて「マクロの記録」を起動。 エクセルファイルZの 【みかん】~【いちご】までの5シートを全データDELETEします。 開いてあるフォルダ「データー」の中からエクセルファイルAを開きます。 (タスクバーにいます) ファイルAのシート【みかん】の全データ選択して エクセルファイルZの【みかん】というシートのA1セルにカーソルを あわせて貼り付けします。 開いてあるフォルダ「データー」の中からエクセルファイルBを開きます。 (タスクバーにいます) ファイルBのシート【りんご】の全データ選択して エクセルファイルZの【りんご】というシートのA1セルにカーソルを あわせて貼り付けします。 これと同じ操作を【バナナ】【ぶどう】【いちご】も行います。 エクセルファイルZにおいて「マクロの記録」を終了させます。 マクロができあがりました。 ファイルZを上書き保存して終了。再立ち上げで記録したマクロを実行。 エラーにはなりませんが、ファイルZの5種類各シートに ファイルA~Eのデータが貼りつきません。 何か無理な事をしているのでしょうか? もしかしてシート名が同じだと駄目?とためしにファイルZのシート名【みかん】~【いちご】を 【みかんZ】~【いちごZ】に変更してマクロを再記録しても 駄目でした。 よろしくお願いします。

  • エクセル複数ファイルを一つのシートに…

    エクセルのsheet1に縦に800個ほどのデータが並んでおります。それらのデータファイルが40個ほど一つのフォルダに保存されています。それらのデータを一つのエクセルのシートにまとめたいのですがどうしたらよいでしょうか?例えばA列にはブック1のデータB列にはブック2のデータというようにしたいのですが…

  • スペース区切りのテキストファイルをExcelで開く

    テキストファイルをExcelファイルとして読み込む必要が多いです 毎回Excelの 開く を使ってテキストファイルを開くのは面倒なので、右クリックの 送る にExcelの実行ファイルをコピーしてそこに送っています ただ、この方式だとスペース区切りで改列出来ず、タブと改行(エンターキー)のみ反映したファイルが開きます 最初からスペース区切りも列区切りにした形でテキストファイルを開く方法(Excelの 開く を使わずに)はないでしょうか

専門家に質問してみよう