ExcelのVBAを利用して、PostgreSQLのデータを読み込む(2)

レコードセットのデータをセルにコピーするには

『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) 

 

PostgreSQL2.jpg