【问题标题】:Populate an Access recordset from an Excel recordset从 Excel 记录集中填充 Access 记录集
【发布时间】:2020-10-11 14:36:09
【问题描述】:

我正在创建与 Access 空表的连接

 Set con = New ADODB.Connection
    con.CursorLocation = adUseClient
    On Error GoTo ooo:
    direct = Range("Root") & Range("MdbTemplate")
    con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & direct & "\DbTargetTemplate.mdb;Jet OLEDB:Database Password="
    On Error GoTo 0
    Set objRecordset = New ADODB.Recordset
    objRecordset.Open strSQL, con, adOpenStatic, adLockOptimistic

然后连接到 Excel

strSQL = "[DATABASE$]"
                Set con = New ADODB.Connection
                con.CursorLocation = adUseClient
                RawData = "c:\Users\User\OneDrive\Word\Afek\Afek101.xlsm"
                con.Open ("Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & RawData & ";Extended Properties=""Excel 12.0 Xml;HDR=YES;""")
                Set objRecordsetXL = New ADODB.Recordset
                objRecordsetXL.Open strSQL, con, adOpenKeyset, adLockOptimistic

如何使用 Excel objRecordsetXL 填充访问表?

【问题讨论】:

  • 我正在寻找一个不假定已安装 Access 的解决方案
  • 您的连接代码可以满足这一要求吗?连接与建议解决方案中的连接有何不同?
  • 是的。 “Set con = New ADODB.Connection”不需要安装 Access

标签: vba ms-access ado


【解决方案1】:

假设您打开记录集的代码有效,请尝试循环 objRecordsetXL,将 objRecordset 设置为 AddNew 模式,将 fields = 设置为 objRecordsetXL 字段,更新 objRecordset,重复。比如:

Do While Not objRecordsetXL.EOF
    objRecordset.Addnew
    objRecordset("field1name") = objRecordsetXL("field1name")
    objRecordset("field2name") = objRecordsetXL("field2name")
    objRecordset.Update
    objRecordsetXL.MoveNext
Loop

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 2014-11-09
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多