人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

●質問者: WATANABE
●カテゴリ:コンピュータ インターネット
✍キーワード:txt インポート エクセル ソフト テキスト
○ 状態 :終了
└ 回答数 : 3/4件

▽最新の回答へ

1 ● chyopper
●27ポイント

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
◎質問者からの返答

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


2 ● Committeeman
●27ポイント
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
◎質問者からの返答

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

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


3 ● Committeeman
●26ポイント

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
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ