0

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
4

2 に答える 2

0

rs (ADODB.Recordset) オブジェクトの Rows でもループする必要があります。MoveNextメソッドを使用して次の行に移動します。

于 2013-02-26T22:56:57.340 に答える
0

rng.CopyFromRecordset メソッドはギャップのないレコードセットを出力するため、列名を表示するときは、一度に 2 つではなく 1 つの列をスキップする必要があります。

Set rng = rng.Offset(0, 1)

私はあなたのコードをテストしましたが、その変更で動作します。

于 2013-02-27T00:51:44.207 に答える