項目

CSVファイルの読み書き

概要

CSVファイルの読み書きの例です。
ファイルとテーブルの構成を同じようにするとコード量が減ります

'------------------------------------------------------------
'■CSVファイル読込■
'
'CSV→DB
'CSVファイルと同じ構成のTABLEに追加するようにします。
'------------------------------------------------------------
Private Function ReadCsvFile()

    Dim rs          As New ADODB.Recordset
    Dim fnum        As Long
    Dim lineBuffer  As String
    Dim arrayItem
    Dim i           As Long
    
    fnum = FreeFile
    
    Open "c:\temp\hoge.txt" For Input As #fnum
    
    rs.Open "select * from t_hoge", CurrentProject.Connection, adOpenDynamic, adLockOptimistic
    
    Do Until EOF(fnum)
    
        '行読み込み
        Line Input #fnum, lineBuffer
            
        '配列作成
        arrayItem = Split(lineBuffer, ",", , vbBinaryCompare)
        
        With rs
            .AddNew '追加
            
            '値設定
            For i = 0 To rs.Fields.Count - 1
                .Fields(i) = arrayItem(i)
            Next
            
            .Update '更新
        End With
    Loop
    
    'クローズ
    rs.Close
    Close #fnum
    
End Function

'------------------------------------------------------------
'■CSVファイル書込■
'
'DB→CSV
'------------------------------------------------------------
Private Function WriteCsvFile()

    Dim rs          As New ADODB.Recordset
    Dim fnum        As Long
    Dim lineBuffer  As String
    Dim arrayItem
    Dim i           As Long
    
    fnum = FreeFile
    
    Open "c:\temp\hoge.txt" For Output As #fnum
    
    rs.Open "select * from t_hoge", CurrentProject.Connection, adOpenForwardOnly, adLockOptimistic
    
    Do Until rs.EOF
        
        lineBuffer = ""
        
        '行作成
        For i = 0 To rs.Fields.Count - 1
            lineBuffer = lineBuffer & "," & rs.Fields(i)
        Next
        
        '初めの","を取る
        lineBuffer = Mid(lineBuffer, 2)
        
        '書き込み
        Print #fnum, lineBuffer
    
        rs.MoveNext
    Loop
    
    'クローズ
    rs.Close
    Close #fnum
    
End Function