[[20150423124721]] 『SQL ServerからEXCELに一気に取得』(setcom) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『SQL ServerからEXCELに一気に取得』(setcom)

「ADODB」クラスを使用してSQL Server からデータ読込
Do Until rs.EOFのところでループしていますが、
現在テストなので良いですが、カラム数を100とか
レコード数が数千になった時に、レスポンスが気になります。
ループせずに一気にセルに書き出す方法はあるでしょうか?
全て、SQL Server のカラム順、レコード順にEXCEL
セルに張り付けばいいだけなのですが。

Public Sub GetTestData()

    '変数
    Dim rs As ADODB.Recordset
    Dim strSQL As String
    '画面描画の停止
    Application.ScreenUpdating = False
    'オブジェクト生成
    Set rs = New ADODB.Recordset
    'テストデータ取得SQL
             strSQL = "SELECT " & _
             "    C1, " & _
             "    C2 " & _
             "FROM " & _
             "    TB1 "
    'レコードセットオープン
    rs.Open strSQL, db, adOpenKeyset, adLockReadOnly
    'ループカウンタ
    i = 1
    '取得データループ
    Do Until rs.EOF
        'データをセルへ設定
        Cells(i, 1) = rs!C1
        Cells(i, 2) = rs!C2
        'ループカウンタインクリメント
        i = i + 1
        '次のレコードへ
        rs.MoveNext
    Loop
    'レコードセットクローズ
    rs.Close
    Set rs = Nothing
End Sub

< 使用 Excel:Excel2013、使用 OS:Windows7 >


 Rangeオブジェクトには、 CopyFromRecorsSet というメソッドがあります。

 これを調べてみてください。

(ichinose) 2015/04/23(木) 12:53


ichinoseさんいつも大変お世話になります。
DOのところに以下を入れるだけで出来ました。
大変有り難う御座いました。
Worksheets("SHEET2").Cells(2, 3).CopyFromRecordset rs

(setcom) 2015/04/23(木) 14:17


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.