エクセルについての質問です。仮に”A001.txt”、”A002.txt”、”A003.txt”・・・と同一フォルダ内に100ファイルあるとして、それぞれのテキストファイルをエクセルに一括インポートしたいと考えています。


具体的には”A001.txt”のテキストを”A列”に、”A002.txt”のテキストを”B列”に、”A003.txt”のテキストを”C列”にといった感じです。

マクロ、ソフト問いませんので判り易くお願い致します。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/05/13 00:35:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:chyopper No.1

回答回数416ベストアンサー獲得回数69

ポイント27pt

VBAのマクロです。

テキストファイルの2行分を取り込んでいます。

Public Sub ReadTextFile()
  Const FOLDER_PATH As String = "D:\test\"  ' 対象ファイルがあるフォルダー
  Dim FileNum As Integer
  Dim FileName As String      ' 対象ファイルのファイル名
  Dim LineText As String      ' 対象ファイルから読み込んだ文字
  Dim i As Long                 ' 行番号

  i = 1

  FileName = Dir(FOLDER_PATH & "*.txt")
  Do Until FileName = ""
    FileNum = FreeFile
    Open FOLDER_PATH & FileName For Input Access Read As FileNum  ' 対象ファイルを開く

      Line Input #FileNum, LineText   ' 対象ファイルの1行目を読む
      Cells(1, i).NumberFormatLocal = "@"     ' セル書式を「文字列」に設定
      Cells(1, i).Value = LineText    ' 対象ファイルの1行目の値を書き込む
      Line Input #FileNum, LineText   ' 対象ファイルの2行目を読む
      Cells(2, i).NumberFormatLocal = "@"     ' セル書式を「文字列」に設定
      Cells(2, i).Value = LineText    ' 対象ファイルの2行目の値を書き込む
    Close FileNum  ' 対象ファイルを閉じる

    i = i + 1
    FileName = Dir()  ' 次の対象ファイルの名前を取得
  Loop
End Sub
id:WATANABE

例えば”A001.txt”が2行分、”A002.txt”が1行分だとした場合、”A002.txt”の読み込み後に止まってしまいます。またテキストファイルの多くは200行程度ですので、200行読み込むか最終行まで読み込みに対応させたいのですが、可能でしょうか?

2010/05/06 15:32:47
id:Committeeman No.2

回答回数153ベストアンサー獲得回数19

ポイント27pt
Sub Macro1()
    Dim P As String, F As String, R As Long, C As Long, T As String
    P = "z:\test"
    
    Sheets("Sheet1").Select
    Cells.Select
    Selection.NumberFormatLocal = "@"
    C = 1
    F = Dir(P & "*.txt")
    Do Until F = ""
        Open P & F For Input As #1
        R = 1
        Do Until EOF(1)
            Line Input #1, T
            Cells(R, C).Value = T
            R = R + 1
        Loop
        Close #1
        C = C + 1
        F = Dir()
    Loop
End Sub
id:WATANABE

フォルダの指定を変えてあげたのですが、うまく動作しません。

できましたら回答者1の方の様にコメントをつけていただけませんか?

2010/05/06 21:39:11
id:Committeeman No.3

回答回数153ベストアンサー獲得回数19

ポイント26pt

Excel2000で動作確認しているから以降なら動くはず

Sub Macro1()
    Dim P As String, F As String, R As Long, C As Long, T As String  変数宣言
    P = "z:\test"  フォルダ指定
    
    Sheets("Sheet1").Select  Sheet1を選択
    Cells.Select  シート全体を選択
    Selection.NumberFormatLocal = "@"  書式を文字列に変更
    C = 1  列番号初期化
    F = Dir(P & "*.txt")  ファイル名読み込み
    Do Until F = ""  ファイル名が空なら終了
        Open P & F For Input As #1  ファイルオープン 
        R = 1  行番号初期化
        Do Until EOF(1)  ポインタが末尾なら終了
            Line Input #1, T  一行読み込み
            Cells(R, C).Value = T  セルに書き込み
            R = R + 1  行番号加算
        Loop
        Close #1  ファイルクローズ
        C = C + 1  列番号加算
        F = Dir()  次のファイル名読み込み
    Loop
End Sub

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 ardarim 897 806 145 2010-05-07 02:24:51

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません