获取Excel VBA MS Access查询以追加或显示查询的数组?

时间:2013-02-26 22:54:19

标签: sql excel vba

我正在尝试使用Excel查询MS Access(2007-2010)数据库并将查询打印到我的电子表格中。

以下代码仅将字段标题打印到指定的单元格中,而不打印所选字段中的其他数据。我哪里错了?提示等欢迎。

     Option Explicit

    ' Add reference to Microsoft ActiveX Data Objects Lib

    Public Sub main(): On Error GoTo Err_handler

        Dim cn As ADODB.Connection
        Set cn = New ADODB.Connection


    'open DB connection

        cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Databaselocation
        cn.Open

        Dim rs As ADODB.Recordset
        Set rs = New ADODB.Recordset

      'Query Stuff

        rs.ActiveConnection = cn
        rs.Open "SQL Query here;"



    'does something
        Dim fld As ADODB.Field
        Dim rng As Range
        Set rng = [a2]

        For Each fld In rs.Fields
            rng.Value = fld.Name
            Set rng = rng.Offset(0, 2)
        Next fld

        Set rng = rng.Offset(2, -rs.Fields.Count)
        rng.CopyFromRecordset rs



    ' closes db connection

        rs.Close
        cn.Close
        Set rs = Nothing
        Set cn = Nothing

        Exit Sub

        Err_handler:
            MsgBox Err.Description

        End Sub

2 个答案:

答案 0 :(得分:0)

您还必须在rs(ADODB.Recordset)对象的Rows中循环。使用MoveNext方法移至下一行。

答案 1 :(得分:0)

您希望在显示列名而不是两列时一次跳过一列,因为rng.CopyFromRecordset方法将输出没有间隙的记录集。

Set rng = rng.Offset(0, 1)

我测试了你的代码,它确实可以解决这个问题。