打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Excel VBA ADO连接ACCESS数据库
一、ACCESS数据库加密
1、ACCESS 2013数据库加密方式
(1)使用旧版加密(适用于反向兼容和多用户数据)
(2)使用默认加密(安全性较高)
ADO连接仅支持旧版加密,使用VBA代码动态创建带密码的Access 数据库文件,也是旧版加密。
2、数据库如果采用手工设置密码,则要设置为旧版加密方式:
打开ACCESS 2013—Access选项—客户端设置—加密方法--使用旧版加密(适用于反向兼容和多用户数据)
二、设置ADO连接ACCESS数据库方式一
(1)引用 Microsoft ActiveX Data Objects 2.x Library(操作方式:Visual Basic-工具-引用,不同office版本不同)
  说明:当未引用,运行后会显示“用户定义类型未定义”
(2)连接代码
Sub 导入数据1()
    Dim cnn As ADODB.Connection      '数据库连接
    Dim mydata As String                   '数据库的完整路径和名称
    Dim mytable As String                  '数据表名称
    Dim sql As String                         'sql语句
    Dim rs As ADODB.Recordset          '临时数据表纪录
    Dim i As Integer                           '循环数据变量(获取数据表字段)

    '1、连接数据库
    Set cnn = New ADODB.Connection
    mydata = ThisWorkbook.Path & "\进销存数据库.accdb"

    With cnn
        .Provider = "Microsoft.ACE.OLEDB.12.0;Jet OLEDB:Database Password='123456'"
        .Open mydata
    End With

    '2、建立与数据库的连接
    mytable = "采购数据3"
    sql = "select 采购数据3.ID,采购数据3.采购日期,采购数据3.供货类型,采购数据3.采购分类,采购数据3.供应商,采购数据3.名称,采购数据3.单位,采购数据3.单价,采购数据3.数量,采购数据3.金额,采购数据3.入账日期" & " from " & mytable & " order by 采购日期"
    Set rs = New ADODB.Recordset
    rs.Open sql, cnn, adOpenKeyset, adLockOptimistic

     '3、复制数据库数据
    ' (1)清除原数据
    ActiveSheet.Cells.ClearContents

    '(2)复制字段名
    For i = 1 To rs.Fields.Count
        Cells(1, i) = rs.Fields(i - 1).Name
    Next i

    '(3)复制全部数据
    Range("A2").CopyFromRecordset rs

    rs.Close
    cnn.Close
    Set rs = Nothing
    Set cnn = Nothing

End Sub


三、设置ADO连接ACCESS数据库方式二
无需引用,直接创建连接
Sub 导入数据2()
    Dim cnn As Object                '数据库连接
    Dim strcnn As String             'ACCESS连接语句
    Dim mydata As String            '数据库的完整路径和名称
    Dim mytable As String           '数据表名称
    Dim sql As String                  'sql查询语句
    Dim rs As Object                  '临时数据表纪录
    Dim i As Integer                  '循环数据变量(获取数据表字段)

    '1、连接数据库
    Set cnn = CreateObject("ADODB.Connection")
    mydata = ThisWorkbook.Path & "\进销存数据库.accdb"

    Select Case Application.Version * 1    '设置连接字符串,根据版本创建连接
        Case Is <= 11
            strcnn = "Provider=Microsoft.Jet.Oledb.4.0;Jet OLEDB:Database Password='123456';Data Source=" & mydata
        Case Is >= 12
            strcnn = "Provider=Microsoft.ACE.OLEDB.12.0;Jet OLEDB:Database Password='123456';Data Source=" & mydata
    End Select

    cnn.Open strcnn    '打开数据库链接

    '2、设置sql查询语句
    mytable = "采购数据3"
    Set rs = CreateObject("ADODB.Recordset")

    sql = "select 采购数据3.ID,采购数据3.采购日期,采购数据3.供货类型,采购数据3.采购分类,采购数据3.供应商,采购数据3.名称,采购数据3.单位,采购数据3.单价,采购数据3.数量,采购数据3.金额,采购数据3.入账日期" & " from " & mytable & " order by 采购日期"
    Set rs = cnn.Execute(sql)    '执行查询,并将结果输出到记录集对象

    '3、复制数据库数据

    With ActiveSheet
        .Cells.ClearContents

        For i = 0 To rs.Fields.Count - 1    '填写标题
            .Cells(1, i + 1) = rs.Fields(i).Name
        Next i

        .Range("A2").CopyFromRecordset rs

        '.Cells.EntireColumn.AutoFit  '自动调整列宽
        '.Cells.EntireColumn.AutoFit  '自动调整列宽

    End With


    rs.Close
    cnn.Close
    Set rs = Nothing
    Set cnn = Nothing

End Sub





本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
第3章 获取SQL Server数据库信息
将数据库记录数据全部导入到excel工作表
VB连接数据库方式汇总
用ado对象,连接到excel表
Access/VBA/Excel-Access表及字段创建-03
VB通过ADO连接SQL数据的两种方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服