マクロで複数のテキストファイルをエクセルに貼り付ける方法

このQ&Aのポイント
  • マクロを使用して、複数のテキストファイルをひとつのエクセルシートに貼り付ける方法について教えてください。
  • 複数のテキストファイルをエクセルに貼り付ける際、ファイル名を一列目に記入し、ファイルの中身の行数と同じ位置まで記入する方法を教えてください。
  • 複数のテキストファイルを一列目にファイル名と共にエクセルに貼り付ける方法を教えてください。ファイルの中身の行数と同じ位置まで記入することが重要です。
回答を見る
  • ベストアンサー

マクロに関して、ファイル名を一列目に記入する方法。ただし、ファイルの中身の行数だけ記入したい

はじめまして、エクセルのマクロでお聞きしたいことがあり 質問させていただいております。 自分で考えろと言われればそれまでですが、 まったくのど素人のためやり方を教えていただけないでしょうか よろしくお願いいたします。 下記のようなテキストファイルが多数あるときに すべてのテキストファイルをひとつのエクセルシートに一列目にファイル名を記入されている状態で 次々に貼り付けたいと考えております。 例として ============ ファイル名:clw○○○.txt ファイルの中身は下記 20100410 C:▽▽ 20100410 C:○○ ============ ============ ファイル名:clw▽▽▽.txt ファイルの中身は下記 20100410 C:▽▽ 20100410 C:○○ 20100410 C:■■ ============ ↓(下記が完成イメージ) 一列目にファイル名を記入。 ただし、ファイルの中身の行数と同じ位置まで記入する A B C clw○○○ 20100410 C:▽▽ clw○○○ 20100410 C:○○ clw▽▽▽ 20100410 C:▽▽ clw▽▽▽ 20100410 C:○○ clw▽▽▽ 20100410 C:■■ 以上、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

こんなかんじでしょうか 実行するとファイルオープンダイアログ が出て、一列目にファイル名、二列目に ファイル中のそれぞれ一行をそのまま出力します Sub Autofileopen() Dim OpenFileName As Variant ''ファイル名(配列) Dim tmp As String ''ファイル一行読み込み時に使用 Dim i As Integer ''ループ変数 Const OUTPUT_WORKSHEETS_NUM = 1 ''ファイルをアウトプットするワークシート番号 Application.ScreenUpdating = False ''スクリーンの更新をしない '''''''''''''''''''' ファイルオープン部分 ''''''''''''''''''''''''''' ''ファイルオープンダイアログを表示してファイルのディレクトリを取得 ''複数選択可 ''OpenFileName()は1始まり OpenFileName(1), OpenFileName(2)・・・・ OpenFileName = Application.GetOpenFilename( _ FileFilter:="テキストファイル,*.txt,データファイル,*.dat,すべてのファイル,*.*", _ MultiSelect:=True) '''ファイルが選択されたときとキャンセルのときの区別 '''ファイルが選択されたときはOpenFileNameが配列として返される If IsArray(OpenFileName) Then ''なにもしない Else ''ファイルが選択されなかったときはIsArray(OpenFileName)=falseとなる MsgBox "キャンセルされました。", vbInformation End If ''''''''ワークシートに出力部分''''''''''''''''''''''''''''''''''' OutPutRow = 1 ''出力行はじめ For i = 1 To UBound(OpenFileName) n = FreeFile(0) '''''引数に0を指定すると、FreeFileは1~255の範囲のファイル番号を返す Open OpenFileName(i) For Input As #n Do While Not EOF(n) ''ファイル終わりまで繰り返す Line Input #n, tmp ''一行読み込み ''''''''''''''ワークシートに出力 Worksheets(OUTPUT_WORKSHEETS_NUM).Cells(OutPutRow, 1) = Dir(OpenFileName(i)) Worksheets(OUTPUT_WORKSHEETS_NUM).Cells(OutPutRow, 2) = tmp OutPutRow = OutPutRow + 1 ''ワークシートの出力する行数をひとつ増やす Loop Close #n Next i End Sub

その他の回答 (2)

回答No.3

No.2の修正です ファイルオープンダイアログでキャンセルされたときの 挙動ですが、 Else ''ファイルが選択されなかったときはIsArray(OpenFileName)=falseとなる MsgBox "キャンセルされました。", vbInformation End ''ここでプログラムを終了(←追加箇所) End If と、End を入れてプログラムを終わらせるようにしたほうがいいです。

回答No.1

カテゴリが違います。 教えて!goo > デジタルライフ > ソフトウェア > MS Office http://oshiete1.goo.ne.jp/kotaeru_reply.php3?q=5819030 がよろしいかと。

関連するQ&A

  • ファイル名が記入されたファイルを読み込んでcdする

    ファイル名が記入されたファイルを読み込んでカレントディレクトリを変更するにはどうしたら良いでしょうか?   具体的に申し上げると、    カレントディレクトリに filepass.txt というファイルが存在し、 中身には、例えば、 C:\Software と書かれています。   MATLABで、 filepass.txtを読み込み、 中に書かれている、 ディレクトリ名に、   カレントディレクトリを変更する(cd) にはどうしたらよいでしょうか?

  • 複数テキストを一行ずつファイル名を付けて結合する方法

    複数テキストを一行ずつファイル名を付けて結合する方法 フォルダにある複数のテキストデータを1つのテキストデータに結合する際、テキスト1行毎の先頭にファイル名を付けたいのですが。具体的には以下の通りです。 最終的にはexcelに取込み処理するので、excelのマクロかDOS系でできるとあり難いです。 [file1.txt] 1111111111 2222 33333333 [file2.txt] 123 1234 ↓ [all.txt] file1.txt 1111111111 file1.txt 2222 file1.txt 33333333 file2.txt 123 file2.txt 1234

  • ファイルの中身に対する再帰的検索

    初心者です。 テキストファイルの中身を調べて、その中に特定の拡張子を持ったファイル名があれば更にその中身を調べていって、階層構造になったファイルを全て調べあげるスクリプトを作ろうとしています。 例えばfile1.txtの中身が ... hoge file2.txt file3.txt hogehoge ... だったとすれば、今度はfile2.txtおよびfile3.txtの中身に.txtという拡張子を持ったファイル名があるかどうか調べ、該当するものが無くなるまで調べていきます。 これらのテキストファイルは全て同じディレクトリ内に存在します。 どういう具合のループにすればよいのか想像がつきません。 アドバイスお願いします。

    • ベストアンサー
    • Perl
  • テキストファイルの中身について

    あるフォルダしたのテキストファイルとそのファルダしたのフォルダ中のテキストファイルについて、 例えば、”日本”と言う文字が有ったら、そのテキストファイル名を表示するようなの機能を実現したいです。 何を使ったら、いいですか? サンプルが欲しいです。 教えてください!お願いします。 ーーーーーーーーーーーーー temp-------a.txt |------b.txt |------temp1 |--------a1.txt |--------b1.txt       … などなど、 テキストファイルの中身に、”日本”という文字が存在したら、そのテキストファイル名を出力 ーーーーーーーーーーーーー

  • VBAでエクセルからのファイル名とテキスト化を自動で実行する方法

    マクロを実行して、エクセルのセルからファイル名とテキストファイルを自動で出力したいのですが、VBA初心者なのでプログラムの書き方がわかりません。 どうかVBAのプログラムの書き方を教えて下さい。 【マクロ実行前のエクセル状態】 1.エクセルのA列にファイル名1を入力 2.エクセルのB列にファイル名2を入力 3.エクセルのC列にテキスト出力させたい文字列を入力 【期待のマクロ動作】 ファイル名1+ファイル名2のファイル名でC列の文字列をテキストファイルで出力。 《例》 A B C 1 2 あ ⇒マクロ実行⇒ファイル名『12』テキスト内容『あ』 3 4 い ⇒マクロ実行⇒ファイル名『34』テキスト内容『い』 5 6 う ⇒マクロ実行⇒ファイル名『56』テキスト内容『う』 7 8 え ⇒マクロ実行⇒ファイル名『78』テキスト内容『え』 ・ ・ ・ ・ 上記の様に、一回のマクロ実行で入力されている列のセル全て がファイル名付きのテキストファイルとして出力をさせたいです。 申し訳ありませんが、よろしくお願いいたします。

  • 今開いているエクセルのファイル名をセルに取り込みたい

    日付(yymmdd.txt)の付いた名前のテキストファイルを 自動的にエクセルにCSVで取り込む様に、マクロを組みました。なので、このファイル名に日付が付いているので、この日付をどうにかしてエクセルに取り込みたいのですが、方法をご存知無いですか? TXTとエクセルは同じフォルダに入れて管理する予定なので、エクセルファイルの居るフォルダ内のファイル名を取り込むのでも構いません。 どなたか良い案ありませんか? よろしくおねがいします。

  • Excelのマクロで改行を含んだテキストファイルの中身を1つのセルに書

    Excelのマクロで改行を含んだテキストファイルの中身を1つのセルに書き込みたいです。 ネット上を探してみると、1行ごとにわけて各行に書き込むマクロは見つかったのですが、 もっと原始的にファイルを開くのダイアログからテキストを指定して、その中身をただ単純にセルに入力したいです。 どのように記述すればよいでしょうか??

  • マクロで指定ファイルを開く方法

    ずぶの素人です。 例えばエクセルシートのA1に「こんにちわ」と 入力するとハードディスクの指定のフォルダ内から 「こんにちわ」と言うファイルを開く事はできるのでしょうか? 変数?というものを使ってみたものの ファイル名 = Range("A1") Workbooks.OpenText Filename:=C:\ファイル名.txt" としてみたところで ファイル名というファイルを探しにいってしまい 一向に進みません。 なんせ素人なんものでテキストを見ても 意味がわかりません。 どうかよろしくお願いします。

  • エクセルマクロで同じフォルダ内のテキストファイルをメモ帳で開く方法

    「マクロを記述したエクセルファイルと同じフォルダにある、 特定のファイル abc.txt を、メモ帳で開く」ということをしたいのですが、マクロの記述をご教授下さい。 フォルダ名を固定すると、 Shell "notepad C:\--\abc.txt", vbNormalFocus という形でできたのですが、 フォルダの名前は、固定ではなく、変わります。 ですので、フォルダ名が含まれると都合が悪くなってしまうんです。 エクセル2000、WINDOWS XP を利用しています。 どうぞよろしくお願いいたします。

  • エクセルマクロ 異なるファイル名でも実行してくれるマクロ

    マクロ初心者です。よろしくお願いします。 ファイル名はすべて例えです。 「A」エクセルファイルを 「Z」というファイルに貼り付けるマクロを作りました。 そのマクロで「B」ファイルからも「C」ファイルからも 「Z」ファイルにコピーをしなくてはいけないのですが VBAには「A」で記録されているため 「B」と「C」にはそのマクロが使えません・・・。 VBAをどのようにデバックすればいいのでしょうか?