ExcelからSQLを発行して、PostgreSQLのデータを読み込むVBAプログラムです。
セルB1~B4にログイン情報、B6にSQL文を入力して[SQL実行]ボタンをクリック
すると、新しいシートにデータが読み込まれます。
接続には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
一応、ファイルもおいておきます。ダウンロードはこちらからどうぞ。
(ダウンロード・ご利用は、すべて自己責任にてお願いいたします)