テキストファイルの内容を1行ずつ読み込むマクロテンプレート
Sub sample()
Dim inputFile As String
Dim readLine As String
inputFile = "<ファイルパス>"
Open inputFile For Input As #1
Do Until EOF(1)
Line Input #1, readLine
Loop
Close #1
End Sub
以下で詳しく解説します。
テキストファイルの内容を1行ずつ読み込む手順
テキストファイルの内容を1行ずつ読み込むためには以下の手順を実施します。
- 対象のテキストファイルを開く
- 開いたテキストファイルを1行目から順に最終行まで読み込む
- 対象のテキストファイルを閉じる
①③対象のテキストファイルを開く/閉じる
テキストファイルを開く/閉じるマクロは以下です。
Sub sample()
Dim inputFile As String
inputFile = "C:\Users\share\Desktop\folder\test.txt"
Open inputFile For Input As #1
Close #1
End Sub
解説
以下の行では、読み込み対象のテキストファイルのパスを格納するための String 型の変数 inputFile
を宣言し、その inputFile
に対象のテキストファイルのパスを格納しています。
Dim inputFile As String
inputFile = "C:\Users\share\Desktop\folder\test.txt"
以下の行では対象のテキストファイルを開いています。
Open inputFile For Input As #1
以下の行では対象のテキストファイルを閉じています。
Close #1
②テキストファイルを1行ずつ読み込む
対象のテキストファイルを開いている状態でテキストファイルを1行ずつ読み込みます。
以下のように記述することで開いているテキストファイルを1行ずつ最終行まで読み込むことができます。
Sub sample()
Dim inputFile As String
Dim readLine As String
inputFile = "C:\Users\share\Desktop\folder\test.txt"
Open inputFile For Input As #1
Do Until EOF(1)
Line Input #1, readLine
Loop
Close #1
End Sub
解説
以下の行では読み込んだ1行の内容を格納するための String 型の変数 readLine
を宣言しています。
Dim readLine As String
以下の Do ~ Loop のかたまりでは、対象のテキストファイルを1行ずつ読み込み、その内容を変数 readLine
に格納しています。条件式に Until EOF(1)
と指定することで「最終行まで読み込むまで」という条件にすることができます。
Do Until EOF(1)
Line Input #1, readLine
Loop
実行例
以下のマクロは、指定のテキストファイルを1行ずつ読み込み、シート上のセルに順に内容を保存します。
Sub sample()
Dim inputFile As String
Dim readLine As String
Dim i As Integer
inputFile = "C:\Users\share\Desktop\folder\test.txt"
Open inputFile For Input As #1
i = 0
Do Until EOF(1)
Line Input #1, readLine
i = i + 1
ThisWorkbook.Sheets("Sheet1").Cells(i, 1).Value = readLine
Loop
Close #1
End Sub
なお、対象のテキストファイルの内容は以下だとします。
aaaaaaa
bbbbbbb
ccccccc
ddddddd
eeeeeee
このマクロを実行した結果、以下のようにシート上にテキストファイルの内容が保存されます。