ADO → Excel 備忘録

ADOのレコードセットからExcelのシートへデータを貼り付けるとき
以前は、

With Worksheets("実行結果")
j = 1
Do Until rs.EOF
If j = 1 Then
For i = 0 To rs.Fields.Count - 1
.Cells(j, i + 1) = rs.Fields(i).Name
Next
j = j + 1
End If
For i = 0 To rs.Fields.Count - 1
.Cells(j, i + 1) = rs.Fields(i).Value
Next
j = j + 1
rs.MoveNext
Loop
End With
rs.Close

のようなコードを書いていましたが、これよりCopyFromRecordset メソッド
を使うと早いしコードも短い

With sh
For i = 0 To rs.Fields.Count - 1
.Cells(1, i + 1) = rs.Fields(i).Name
Next
.Cells(2, 1).CopyFromRecordset rs
End With

恥ずかしいことに今知った。今後はこれでいこう。
若干、貼り付けられたときの挙動が違うが、、、、。