トップページ >  エクセル マクロ >  ファイル読み込み
初版2011/02/08: 最終更新日2011/02/08
  ファイル読み込み
目次
ファイル読み込み
Line Input
ファイル内容をエクセルシートに書き出し
ファイル読み込み
マクロでファイル読み込みを行うにはFreeFileステートメントとOpenステートメントを使用します。
FreeFileの戻り値はファイル番号を返します。この番号をファイル読み込みの際や、ファイルクローズの際に使用します。
Inf = FreeFile
Open "c:¥tools¥a.txt" For Input As #Inf
これでa.txtというファイルを入力モードで操作できるようになります。
Inputとした場合、存在しないファイルを指定した場合はエラーとなります。
既にファイルが存在する場合だけ入力モードで操作可能となります。

ファイルを最初の行からファイルの最後まで読み込むにはEOF関数を使用します。

Inf = FreeFile
Open "c:¥tools¥a.txt" For Input As #Inf
Do Until EOF(Inf)

Loop
EOF関数の引数にはファイル番号を指定し、Do Untilと併用します。EOF関数はファイルの終わりになるとTrueを返し、それ以外はFalseを返す関数です。
これでDo Until ~ Loop内に処理を記述することで1行ずつ処理をすることが可能になります。

Line Input
Line Inputは以下のように試用します。

Line Input #ファイル番号 変数

この1行をDo Until~Lopp内に記述することによって改行コードまでを変数に格納し、色々と処理が可能になります。
以下は1行ごとにメッセージボックスで表示する例です。

Dim Str As String

Inf = FreeFile
Open "c:¥tools¥a.txt" For Input As #Inf
Do Until EOF(Inf)
    Line Input #Inf, Str
    MsgBox Str
Loop
ファイル内容をエクセルシートに書き出し
ファイル内容をエクセルのシートに書き出す例です。
例では、固定でファイルパス、ファイル名指定していますが、応用すると色々便利です。

Dim Str As String

Sheets("作業シート").Activate  '作業シートをアクティブ
Cells.Clear                    '作業シートクリア
Range("A1").Select             'A1をセレクト

Line = 1                       '行

inf = FreeFile
Open "c:¥tools¥a.txt" For Input As #inf
Do Until EOF(inf)
    Line Input #inf, Str
    Cells(Line, 1) = Str
    Line = Line + 1
Loop