レコードセットのデータをセルにコピーするには
『ExcelのVBAを利用して、PostgreSQLのデータを読み込む』 の
Cells.CopyFromRecordset <レコードセット>
というコマンドが速くていいのですが、1行ずつ読み込んでいくやり方も掲載してお
きます。
Cells.CopyFromRecordset adoRs
の部分を、ざっと次のように変更します。
Dim intClmCnt As Integer 'テーブルの列数
Dim lngRow As Long 'ワークシート上のデータ入力行
Dim lngII As Long 'ループ用汎用カウンタ
'フィールド名、データ型の取得
intClmCnt = adoRs.Fields.Count
For lngII = 0 To intClmCnt - 1
'セルにフィールド名を代入
Cells(1, lngII + 1).Value = adoRs.Fields(lngII).Name
If adoRs.Fields(lngII).Type = 202 Then
'文字列の列を文字列書式に
Columns(lngII + 1).NumberFormatLocal = "@"
End If
Next lngII
'データの取得
lngRow = 2
Do Until adoRs.EOF
For lngII = 0 To intClmCnt - 1
'余分な空白を除去しながらデータをセルに代入
Cells(lngRow, lngII + 1).Value = Trim(adoRs.Fields(lngII).Value)
Next lngII
adoRs.MoveNext
lngRow = lngRow + 1
Loop
行数が急増しますが、こちらの方が、
・テーブルの列数の取得
・フィールド名の取得
・フィールドの種類の取得
・データの取得
等のレコードセットの扱い方が理解できるかと思います。
なお、ここではデータの取得を
レコードセット.Fields(n).Value
という、フィールド番号で指定する方法でおこなっていますが、通常のケースでは
レコードセット!フィールド名
という書き方の方が読みやすいコードになると思います。
一応、ファイルもおいておきます。
(ダウンロード・ご利用は、すべて自己責任にてお願いいたします)
■ExcelからSQLを発行して、PostgreSQLのデータを読み込む(PostgreSQL2.xls)