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

ExcelからSQLを発行して、PostgreSQLのデータを読み込むVBAプログラムです。

 

セルB1~B4にログイン情報、B6にSQL文を入力して[SQL実行]ボタンをクリック

すると、新しいシートにデータが読み込まれます。  

PostgreSQL1.jpg

 

接続にはADODBを利用しているので、PostgreSQLに接続するクライアントマシン

にはPgOleDBをインストールしておく必要があります。 また、プログラム作成時に

は参照設定で

  『OleDb 1.0 Type Library』

  『 Microsoft ActiveX Data Objects 2.8 Library』

にチェックを入れてください。

 

動作は最小限、コードはできるだけ単純にしています。 レコードセットから1行ず

つ代入することさえしていません。(レコードセットごと代入して済ませています)

コードはこれだけです。

 

Option Explicit

Sub subPgGetData()

    'コネクションの確立
    Dim adoCn As New ADODB.Connection
    On Error GoTo ErrLogin:
    With adoCn
        .Provider = "PostgreSQL OLE DB Provider"
        .Properties("Data Source") = Range("B1").Value
        .Properties("Location") = Range("B2").Value
        .Properties("User ID") = Range("B3").Value
        .Properties("Password") = Range("B4").Value
        .Open
    End With
    On Error GoTo 0
   
    'レコードセットの取得
    Dim adoRs As New ADODB.Recordset
    On Error GoTo ErrSql:
    adoRs.Open Range("B6").Value, adoCn, adOpenForwardOnly, adLockReadOnly
    On Error GoTo 0

    '新規BOOKのオープン
    Workbooks.Add
   
    'レコードセットをセルにコピー
    Cells.CopyFromRecordset adoRs

    'セル幅調整
    Cells.Columns.AutoFit

    'クローズ
    adoRs.Close: Set adoRs = Nothing
    adoCn.Close: Set adoCn = Nothing

Exit Sub

ErrLogin:
    MsgBox "ログインに失敗しました" & vbCrLf & Err.Number & vbCrLf & Err.Description
    Set adoCn = Nothing
    Exit Sub

ErrSql:
    MsgBox "SQLが実行できません" & vbCrLf & Err.Number & vbCrLf & Err.Description
    Set adoRs = Nothing
    adoCn.Close: Set adoCn = Nothing
    Exit Sub
   
End Sub

 

一応、ファイルもおいておきます。ダウンロードはこちらからどうぞ。

(ダウンロード・ご利用は、すべて自己責任にてお願いいたします)

■ExcelからSQLを発行して、PostgreSQLのデータを読み込む(PostgreSQL1.xls)