【Excel】讀取CSV文本

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(1 To 5) 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 = 1
    ' ファイルのEOF(End of File)まで繰り返す
    Do Until EOF(intFF)
        ' レコード件數カウンタの加算
        lngREC = lngREC + 1
        xlAPP.StatusBar = "読み込み中です....(" & lngREC & "レコード目)"
        ' レコードを読み込む(このサンプルは5項目のCSV)
        Input #intFF, X(1), X(2), X(3), X(4), X(5)                  '
        ' 行を加算しA~E列にレコード內容を表示(先頭は2行目)
        GYO = GYO + 1
        Range(Cells(GYO, 1), Cells(GYO, 5)).Value = X   ' 配列渡し  ' ③
    Loop
    ' 指定ファイルをCLOSE
    Close #intFF
    xlAPP.StatusBar = False
    ' 終了の表示
    MsgBox "ファイル読み込みが完了しました。" & vbCr & _
        "レコード件數=" & lngREC & "", vbInformation, cnsTITLE
End Sub

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章