りんちゃんの日記

日常を書き留めていきます。

Access CSVインポート(複数ファイル)

指定フォルダの全てのファイルを一括でインポートする

 

Private Sub test_Click()

  '指定フォルダ内のファイル名一覧を配列に格納する方法
    'ファイル取得変数
    Dim strFile() As String     '動的配列宣言
    Dim strPath As String       'フォルダのフルパス
    Dim strType As String       'ファイルタイプ
    Dim tmpName As String       'ファイル名
    Dim i As Long               'カウンタ
    Dim j As Long               '行カウンタ
    
    
 'ADO接続変数
 Dim cnn As ADODB.Connection
 Dim rs As ADODB.Recordset
 Dim TextLine
 Dim Seq
 
'ADO接続セット
 Set cnn = CurrentProject.Connection
 Set rs = New ADODB.Recordset
 
 
 rs.Open "T_TEMP_売上", cnn, adOpenKeyset, adLockOptimistic  'TEMPファイル
  

'---------------------------------------------------------------------------
'①前回取り込んだデータを削除

 'T_TEMP_売上
 
  Do Until rs.EOF
    rs.Delete
    rs.MoveNext
  Loop
  

  
  'ファイル名取得開始
    strPath = "C:\Users\admin\Desktop\20121210\"
  '拡張子【csv】を指定
    strType = "*.csv"

    
    '1件取得
    tmpName = Dir(strPath & strType)
    i = 0
    
    '行初期値指定
    j = 1
    
    
    If tmpName = "" Then
        MsgBox "ファイルが見つかりませんでした~"
    End If
    
    
    'Loop 開始
    Do While tmpName <> ""
        '配列の上限再設定
        ReDim Preserve strFile(i)
        strFile(i) = tmpName
        i = i + 1
        MsgBox i & "件目, " & strPath + tmpName

 

''''''''''''''''''''''''''''''''''''''''''''''''''
'csvファイルインポート開始
''''''''''''''''''''''''''''''''''''''''''''''''''
 Open strPath + tmpName For Input As #1

 'T_TEMP_売上に書き込み
 Do While Not EOF(1)
    Line Input #1, TextLine
    Seq = Split(TextLine, ",")
    

    
    If j <> 1 Then  '見出しは除外
    rs.AddNew
       rs!番号 = Val(Seq(0))
       rs!名称 = Seq(1)
       rs!価格 = Val(Seq(2))
       rs!数量 = Val(Seq(3))
    rs.Update
    End If
    
    'jを加算
    j = j + 1

 Loop
 
 Close #1
 
 
 ''''''''''''''''''''''''''''''''''''''''''''''''''
'csvファイルインポート終了
''''''''''''''''''''''''''''''''''''''''''''''''''

    'jをリセット
    j = 1

    ' 次のファイル名取得
     tmpName = Dir
  Loop
 


 'ADO切断
 rs.Close
 Set rs = Nothing
  
 cnn.Close
 Set cnn = Nothing