Sub AcessDB_CSV取込み()
Dim xTmpPath As String
Dim DBFile As String
Dim CSVName As String
Dim CN As ADODB.Connection
Dim RS As ADODB.Recordset
Dim xSQL As String
'フルパス。作成するAccessのファイル名まで書く'
DBFile = "C:\Users\VBA\ADOX\サンプル.accdb"
xTmpPath = "C:\Users\VBA\CVS取込み"
CSVName = "サンプル1.csv"
'//AccessDBに接続'
'▽(1)Excelなど外部からの接続の場合------------------'
'Excelで実行し、外部ファイルのAccessに接続する必要がある場合は以下のようになります。'
Set CN = New ADODB.Connection
CN.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DBFile
CN.Open
'△(1)Excelなど外部からの接続の場合------------------'
'▽(2)Accessのローカルテーブルの場合------------------'
'Accessで実行し、ローカルテーブルに接続する場合は以下のようになります。'
' Set CN = CurrentProject.Connection'
'△(2)Accessのローカルテーブルの場合------------------'
'//既存のAccessDBのテーブルにデータが入っている場合はクリア'
xSQL = "Delete * FROM [テーブル1]"
Set RS = CN.Execute(xSQL)
'以下のSQL文で取り込む'
xSQL = "INSERT INTO [テーブル1]("
xSQL = xSQL & "[番号]"
xSQL = xSQL & " ,[名前]"
xSQL = xSQL & " ,[科目]"
xSQL = xSQL & " ,[点数]"
xSQL = xSQL & ")"
xSQL = xSQL & "SELECT"
xSQL = xSQL & "[番号]"
xSQL = xSQL & " ,[名前]"
xSQL = xSQL & " ,[科目]"
xSQL = xSQL & " ,[点数]"
xSQL = xSQL & " FROM [TEXT;HDR=YES;DATABASE=" & xTmpPath & "]." & CSVName & ""
'「HDR=YES」はCSVファイルの1行目をヘッダーとして扱うかどうかを指定する箇所で、「YES」の場合は1行目をフィールド名として扱います。'
'「NO」の場合は「F1」から始まる列番号で読み込まれます。'
'その場合、上記のSQL文でもフィールド名ではなく、「F1」などの番号で対応します。'
'SQLの実行'
Set RS = CN.Execute(xSQL)
'AccessDBの接続解除'
CN.Close
Set CN = Nothing
Set RS = Nothing
End Sub