2017-07-11 10 views
0

私は6行の固定データセットをSQLで照会しています。このクエリのデータをExcelに転送したいと思います。私の質問は2つの部分に分かれています:VBA SQL Recordsetから列全体をコピー

1 - 複数の列を一度に取り戻すことができますか、それとも列ごとに行う必要がありますか?私は17の列と6つの行を持っています。これは私のExcelのテンプレートに転送されるので、1から7までの列が1つのスペースに8から11の別のセクションに、12から17がExcelの別のセクションに入るように、これを3つに分割することを検討しています。

2 - の私の現在のコード使用の場合:

Range("F2").Value = rst.Fields("ACCOUNT") 

を私は、単一の行を引き戻す列全体(全6行)を取得することが可能であるか、私はすべての6行のループに持っています完全な列を取得するには?事前に

おかげ

答えて

0

使用.GetRows() method、それは、開始する最初のレコードを取得するレコードの数を設定することができ、かつ単一のフィールド名または順序位置、またはフィールド名または順序位置番号の配列。

次の例は、外部Excelブックからレコードセットにデータを取得し、指定されたフィールドを配列に取得し、結果配列をワークシートに貼り付ける方法を示しています。

Option Explicit 

Sub Test() 

    Dim sConnection As String 
    Dim sQuery As String 
    Dim oConnection As Object 
    Dim oRecordset As Object 
    Dim aData() 

    sConnection = _ 
     "Provider=Microsoft.ACE.OLEDB.12.0;" & _ 
     "User ID=Admin;" & _ 
     "Data Source='" & ThisWorkbook.FullName & "';" & _ 
     "Mode=Read;" & _ 
     "Extended Properties=""Excel 12.0 Macro;"";" 

    sQuery = _ 
     "SELECT * FROM [Sheet1$] " & _ 
     "IN '" & ThisWorkbook.Path & "\Src1.xlsx' " & _ 
     "[Excel 12.0;Provider=Microsoft.ACE.OLEDB.12.0;Mode=Read;Extended Properties='HDR=YES;'] " & _ 
     "WHERE Country='UK';" 

    Set oConnection = CreateObject("ADODB.Connection") 
    oConnection.Open sConnection 
    Set oRecordset = oConnection.Execute(sQuery) 
    oRecordset.MoveFirst 
    aData = oRecordset.GetRows(, , Array("CustomerID", "ContactName")) 
    With ThisWorkbook.Sheets(1) 
     .Cells.Delete 
     Output2DArray .Cells(1, 1), WorksheetFunction.Transpose(aData) 
     .Cells.EntireColumn.AutoFit 
    End With 
    oConnection.Close 

End Sub 

Sub Output2DArray(oDstRng As Range, aCells As Variant) 

    With oDstRng 
     .Parent.Select 
     With .Resize(_ 
       UBound(aCells, 1) - LBound(aCells, 1) + 1, _ 
       UBound(aCells, 2) - LBound(aCells, 2) + 1) 
      .NumberFormat = "@" 
      .Value = aCells 
     End With 
    End With 

End Sub 

はまた、このブックとして同じフォルダにデータソースとしてCustomersを含むSrc1.xlsxワークブックがあります:

src1

次のように結果のワークシートがあり、あなたがCustomerIDContactNameフィールドがある見ることができますのみ:

result

関連する問題