Excel(VBA) + PostgreSQL
初めに
この記事では, VBAからPostgreSQLへの接続方法を説明し, 実際にマクロから
シンプルなSQL実行までデモンストレートします.
仕事の業務効率化で使用した際の備忘録的なものです.
実行環境:
OS : Windows10 64bit
DB : PostgreSQL 11.3
Excel2016 32-bit
※PostgreSQLをインストールしていない方は, 以下からダウンロードできます.
https://www.enterprisedb.com/downloads/postgres-postgresql-downloads
1. psqlODBCドライバのインストール
初めに, 自分のPCのExcelのバージョン(bit)を確認する. その後, 以下のサイトへ移動し, 適切なpsqlodbcドライバをインストールする.
使用しているExcelが32bitの場合, psqlodbc_11_01_0000-x86.zipを選択してpsqlodbc_x86.msiを実行する.
※ 64bitの場合は, psqlodbc_11_01_0000-x64.zipを選択する
2.ODBC登録
Windowsボタン -> ODBC Data Source Administrator (32-bit) を実行し, SystemDSNの[add]ボタンからPostgreSQL35Wドライバを選択し, データソースを作成する.
3.マクロ作成
まず初めに, Visual Basicを開き, 「ツール>参照」から "Microsoft ActiveX Data 2.8 Library"にチェックマークをつける.
それでは, 実際にマクロ【CnxTest】からPostgreSQLに接続して, 以下のテーブルについてSQLを発行してデータを取得してみる.
テーブル名: Employee
ID | 名前(name) | 部署名(dep_name) |
---|---|---|
1 | ロバート | 開発部 |
2 | 太郎 | 人事部 |
実行結果は, 以下のようになる.
実行コード
Sub CnxTest()
Dim cnn As ADODB.Connection
Dim recSet As ADODB.Recordset
Dim sql As String, i As Integer, c As Integer
Set cnn = New ADODB.Connection
'接続情報を定義: ここでは, データソース名のみ
cnn.ConnectionString = "DSN:PostgresSQL35W;"
Set recSet = New ADODB.Recordset
sql = "SELECT * FROM Employee"
cnn.Open
recSet.Source = sql
recSet.ActiveConnection = cnn
recSet.Open
i = 1
'sql実行結果を一レコードずつフェッチする.
Do Until recSet.EOF
For c = 0 To recSet.Fields.Count - 1
Cells(c+2,c+2) = recSet(c).Value
Next c
i = i + 1
recSet.MoveNext
Loop
recSet.Close
cnn.Close
Set recSet = Nothing
Set cnn = Nothing
End Sub
※ ソースコード内のマジックナンバー2は, Excelの出力位置に依存している.
参照
Author And Source
この問題について(Excel(VBA) + PostgreSQL), 我々は、より多くの情報をここで見つけました https://qiita.com/AA_aA/items/1efbaf074728f172ee89著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .