今回はVBAでポスグレ(PostgreSQL)のDB操作をする方法です。
この記事ではODBC接続を使った方法をご紹介します。
[目次]
ODBC接続の準備
まずはODBC接続の準備からです。
クライアント端末にポスグレのODBCドライバーをインストールするところからになります。
インストーラをダウンロード
まずポスグレのサイトにアクセスします。
➡( http://www.postgresql.org/ )
![](http://trend-desk.com/wp-content/uploads/2020/03/01-1024x530.png)
左上か中央のDownloadをクリックします。
![](http://trend-desk.com/wp-content/uploads/2020/03/01-2-1024x530.png)
左ペインの「File Browser」をクリックします。
![](http://trend-desk.com/wp-content/uploads/2020/03/02-2-1024x669.png)
「odbc」をクリックします。
![](http://trend-desk.com/wp-content/uploads/2020/03/03-1024x573.png)
「versions」をクリックします。
![](http://trend-desk.com/wp-content/uploads/2020/03/04-1024x522.png)
「msi」をクリックします。
![](http://trend-desk.com/wp-content/uploads/2020/03/05.png)
ここでmsiの一覧が表示されます。
一番したが最新のmsiになっているので、そこで各自の環境に合ったmsiをダウンロードします。
OSのbit数を調べる方法はこちら⇩
64ビット環境の場合は、「x64」が付いたmsiをダウンロードします。
![](http://trend-desk.com/wp-content/uploads/2020/03/06-1024x583.png)
インストール
ダウンロードしたインストーラをダブルクリックで起動します。
「Next」をクリック
![](http://trend-desk.com/wp-content/uploads/2020/03/07.png)
「I accept the terms in the License Agreement」にチェックを入れて「Next」をクリック
![](http://trend-desk.com/wp-content/uploads/2020/03/08.png)
そのまま「Next」をクリック
![](http://trend-desk.com/wp-content/uploads/2020/03/09.png)
「Install」をクリック
![](http://trend-desk.com/wp-content/uploads/2020/03/10.png)
しばらく待ちます。
![](http://trend-desk.com/wp-content/uploads/2020/03/11.png)
これで完了です。「Finish」をクリック
![](http://trend-desk.com/wp-content/uploads/2020/03/12.png)
接続テスト
コントロールパネルを開きます。
「システムとセキュリティ」をクリック
![](http://trend-desk.com/wp-content/uploads/2020/03/13.png)
「管理ツール」をクリック
![](http://trend-desk.com/wp-content/uploads/2020/03/14.png)
「ODBCデータソース」をクリック
![](http://trend-desk.com/wp-content/uploads/2020/03/15.png)
こんな画面が開きます。
![](http://trend-desk.com/wp-content/uploads/2020/03/16.png)
「システムDNS」タブで追加をクリック
![](http://trend-desk.com/wp-content/uploads/2020/03/16-1.png)
「PostgreSQL Unicode(x64)」を選択し、完了をクリック
![](http://trend-desk.com/wp-content/uploads/2020/03/17.png)
以下のような設定画面が開くので、サーバー名、ユーザー名、パスワードを入力して「テスト」をクリック
![](http://trend-desk.com/wp-content/uploads/2020/03/18.png)
「Connection successful」が表示されたらOKです!
![](http://trend-desk.com/wp-content/uploads/2020/03/19.png)
VBAからポスグレDBを操作する方法
ExcelのVBAからポスグレのDB操作をする方法です。
まずExcel側での準備として参照追加が必要なので、その設定をします。
参照設定追加
VBAのウィンドウでメニューバーの「ツール」から参照設定をクリック
![](http://trend-desk.com/wp-content/uploads/2020/03/21.png)
参照設定の画面が開くので、
「Microsoft ActiveX Data Objects 2.8 Library」にチェックを入れてOKをクリック。これで準備は完了です。
※環境によってこのライブラリのバージョンが違う場合があります。
![](http://trend-desk.com/wp-content/uploads/2020/03/20.png)
VBAの記述方法
以下、サンプルスクリプトになります。
Sub TestVBA()
Const SV = "localhost"
Const DB = "【データベース名】"
Const PW = "【パスワード】"
Dim CNN As Object
Dim RS As Variant
Set CNN = CreateObject("ADODB.Connection")
CNN.Open "Provider=MSDASQL;Driver=PostgreSQL Unicode;UID=postgres;Port=5432" & ";Server=" & SV & ";Database=" & DB & ";PWD=" & PW
'データ取得
Dim CN As ADODB.Connection
Dim SQL As String
'接続
'レコードセットを取得
Set RS = New ADODB.Recordset
SQL = "SELECT * from person"
RS.Open SQL, CNN, adOpenKeyset, adLockOptimistic, adCmdText
'テーブルのヘッダーとデータを出力する。
With Worksheets("Sheet1")
.Cells.Clear
RS.MoveFirst
i = 1
.Cells.Clear
Do Until RS.EOF
For j = 0 To RS.Fields.Count - 1
If i = 1 Then .Cells(i, j + 1) = RS(j).Name
If j <> 8 Then
.Cells(i + 1, j + 1) = RS(j).Value
End If
Next j
RS.MoveNext
i = i + 1
Loop
.Columns("A:H").AutoFit
End With
RS.Close
' レコードセット、データベースを閉じる
CNN.Close
Set CNN = Nothing
End Sub
ここではpersonというテーブルから全行全列を取得してきて、Sheet1に出力しています。
参考にしたサイト➡( https://qiita.com/syict001/items/9ec043f711636dc0105b )
最近のコメント