VBA:ACC数据库处理

一、ACC数据库文件名后缀:mdb(2003版本)和accdb(2007及以上版本),类似xls和xlsx的区别;
二、EXCEL-ACC处理:
1、Excel批量导入ACC:
需引用Microsoft ActiveX Data Object 2.8 Library【2.0-6.1任意选一个,我选的是2.8】

Sub 数据导入ACC()
    On Error Resume Next
    t = Timer
    '定义ADODB 连接Access数据库
    Dim Cnn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim strFileName As String   '数据库文件名
    
    'strFileName = InputBox("请输入文件路径及文件名:", "数据库地址确认", "G:\YLMS\zj.mdb")
    strFileName = "F:\DYGH.mdb"

    '如果是2010版本,参数为:Provider=Microsoft.ACE.OLEDB.12.0;
    '如果是2003版本,修改成:provider=Microsoft.jet.OLEDB.4.0;

    Cnn.Open "provider=Microsoft.jet.OLEDB.4.0;Data Source=" & strFileName & ";"
    rs.ActiveConnection = Cnn
    rs.LockType = adLockOptimistic
    
    rs.Open "CDMX"   '数据库表名称
    
    '定义Excel表中的数据区域以写入Access
    Dim Sht As Worksheet
    Dim rn As Long
    Dim CN As Long
    Set Sht = ThisWorkbook.Sheets("YW")
    
    For rn = 2 To Range("A65536").End(xlUp).Row
    rs.AddNew
    'Rs!ID = Sht.Cells(rn, 1)         'num,name等是数据库中指定表的字段
    rs!XITONG = "运维网"
    'Rs!ZHUANGHAO = Sht.Cells(rn, 3)  '是否需要注释掉SHT,请依据测试结果
    rs!ZHUANGHAO = Range("C" & rn)
    rs!CDLIANG = Range("D" & rn)
    rs!CHEHAO = Cells(rn, 5)
    rs!KMS = Cells(rn, 6)
    rs!SOC_KS = Cells(rn, 7)
    rs!SOC_JS = Cells(rn, 9)
    rs!KSSJ = Cells(rn, 10)
    rs!JSSJ = Cells(rn, 11)
    rs!YONGSHI = Cells(rn, 8)
    rs!BEIZHU = Now()
    rs.Update
    Next rn
    
    MsgBox "数据导入成功!"
    
    rs.Close
    Cnn.Close
    Set rs = Nothing
    Set Cnn = Nothing
    Set Sht = Nothing
    MsgBox "运行" & Format((Timer - t), "0.0000") & "秒"
End Sub

2、vba删除ACC数据:
需引用:Microsoft DAO 3.6 Object Library

Sub vba删除ACC()
Dim strFileName As String
strFileName = "F:\DYGH.mdb"
Dim con As New ADODB.Connection
con.Open "provider=Microsoft.jet.OLEDB.4.0;Data Source=" & strFileName & ";"
'ACC如果是2010版本,参数修改为:provider=microsoft.ace.oledb.12.0;
Dim sql As String
sql = "delete from CDMX"
con.Execute (sql)
MsgBox "数据库内容已删除!"
End Sub