【问题标题】:Copy rows from access table to Excel将行从访问表复制到 Excel
【发布时间】:2019-12-26 19:53:13
【问题描述】:

我有以下代码

Private Sub CommandButton1_Click()
    Dim cn As Object
    Dim rs As Object
    Dim strSql As String
    Dim strConnection As String
    Set cn = CreateObject("ADODB.Connection")
    strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
        "Data Source=C:\ActionList.accdb"
    strSql = "SELECT * FROM Actionlist;"
    cn.Open strConnection
    Set rs = cn.Execute(strSql)
    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
End Sub

我的目的是从某个表中获取所有行以复制到我的 Excel 工作表中。我虽然这么简单的东西会在互联网上到处都是,但我似乎找不到它。我希望行从 A2 开始,因为我已经使用 Excel 的内置函数将访问表添加到我的工作表中。但是,我想手动执行此操作,以添加某些过滤器。

【问题讨论】:

    标签: vba excel ms-access


    【解决方案1】:

    你会需要,你有什么,而且

    for f= 0 to rs.fields.count-1
        range("a1").offset(0,f).value=rs.fields(f).name
    next f
    
    range("a2").copyfromrecordset rs
    

    【讨论】:

      【解决方案2】:

      切换到DAO,这样CopyFromRecordset()就可以工作了:

      Private Sub CommandButton1_Click()
          Dim Dbs As DAO.Database
          Dim rs As DAO.Recordset
          Dim strSql As String
          Set Dbs = OpenDatabase("C:\ActionList.accdb")
          strSql = "SELECT * FROM Actionlist;"
          Set rs = Dbs.OpenRecordset(strSql)
          'Add Head lines:
          for i= 0 to rs.fields.count-1
              range("a1").offset(0,i).value=rs.fields(i).name
          next f
          'Add Data:
          range("a2").CopyFromRecordset rs
      
          'Colse resources:
          rs.Close
          Set rs = Nothing
          Dbs.Close
          Set Dbs= Nothing
      End Sub
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-02-08
        • 1970-01-01
        • 2022-01-27
        • 2016-11-02
        • 1970-01-01
        • 2010-09-26
        • 2010-09-27
        相关资源
        最近更新 更多