具体的には”A001.txt”のテキストを”A列”に、”A002.txt”のテキストを”B列”に、”A003.txt”のテキストを”C列”にといった感じです。
マクロ、ソフト問いませんので判り易くお願い致します。
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
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の方の様にコメントをつけていただけませんか?
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 |
例えば”A001.txt”が2行分、”A002.txt”が1行分だとした場合、”A002.txt”の読み込み後に止まってしまいます。またテキストファイルの多くは200行程度ですので、200行読み込むか最終行まで読み込みに対応させたいのですが、可能でしょうか?