【Excel】读取CSV文本

时间:2022-03-14 14:30:48
Option Explicit

' CSV形式テキストファイル(5カラム)読み込みサンプル
Sub READ_TextFile()
Const cnsTITLE = "テキストファイル読み込み処理"
Const cnsFILTER = "CSV形式ファイル (*.csv),*.csv,全てのファイル(*.*),*.*"
Dim xlAPP As Application ' Applicationオブジェクト
Dim intFF As Integer ' FreeFile値
Dim strFileName As String ' OPENするファイル名(フルパス)
Dim vntFileName As Variant ' ファイル名受取り用
Dim X( To ) As Variant ' 読み込んだレコード内容 ' ①
Dim GYO As Long ' 収容するセルの行
Dim lngREC As Long ' レコード件数カウンタ ' Applicationオブジェクト取得
Set xlAPP = Application
' 「ファイルを開く」のフォームでファイル名の指定を受ける
xlAPP.StatusBar = "読み込むファイル名を指定して下さい。"
vntFileName = xlAPP.GetOpenFilename(FileFilter:=cnsFILTER, _
Title:=cnsTITLE)
' キャンセルされた場合はFalseが返るので以降の処理は行なわない
If VarType(vntFileName) = vbBoolean Then Exit Sub
strFileName = vntFileName ' FreeFile値の取得(以降この値で入出力する)
intFF = FreeFile
' 指定ファイルをOPEN(入力モード)
Open strFileName For Input As #intFF
GYO =
' ファイルのEOF(End of File)まで繰り返す
Do Until EOF(intFF)
' レコード件数カウンタの加算
lngREC = lngREC +
xlAPP.StatusBar = "読み込み中です....(" & lngREC & "レコード目)"
' レコードを読み込む(このサンプルは5項目のCSV)
Input #intFF, X(), X(), X(), X(), X() ' ②
' 行を加算しA~E列にレコード内容を表示(先頭は2行目)
GYO = GYO +
Range(Cells(GYO, ), Cells(GYO, )).Value = X ' 配列渡し ' ③
Loop
' 指定ファイルをCLOSE
Close #intFF
xlAPP.StatusBar = False
' 終了の表示
MsgBox "ファイル読み込みが完了しました。" & vbCr & _
"レコード件数=" & lngREC & "件", vbInformation, cnsTITLE
End Sub