9
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Excel(VBA) + PostgreSQL

Last updated at Posted at 2019-07-29

初めに

この記事では, 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を選択する
スクリーンショット 2019-07-28 23.31.20.png

2.ODBC登録

Windowsボタン -> ODBC Data Source Administrator (32-bit) を実行し, SystemDSNの[add]ボタンからPostgreSQL35Wドライバを選択し, データソースを作成する. スクリーンショット 2019-07-30 0.06.54.png

3.マクロ作成

 まず初めに, Visual Basicを開き, 「ツール>参照」から "Microsoft ActiveX Data 2.8 Library"にチェックマークをつける.
スクリーンショット 2019-07-30 0.34.59.png
 それでは, 実際にマクロ【CnxTest】からPostgreSQLに接続して, 以下のテーブルについてSQLを発行してデータを取得してみる.

テーブル名: Employee

ID 名前(name) 部署名(dep_name)
1 ロバート 開発部
2 太郎 人事部

実行結果は, 以下のようになる.

【マクロ実行前】
スクリーンショット 2019-07-30 1.28.42.png
【マクロ実行後】
スクリーンショット 2019-07-30 1.28.24.png

実行コード

```VB:CnxTest 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の出力位置に依存している.

<h2>参照</h2>
https://qiita.com/syict001/items/9ec043f711636dc0105b




  
9
17
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?