Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Connecting Excel to PostgreSQL via VBA

Is it possible to make query like SELECT from VBA in Excel, so I can query a PostgreSQL DB from Excel?

If is possible please explain me how to connect to the database. I was looking in Google but found no results.

like image 778
vivid Avatar asked Nov 05 '12 10:11

vivid


2 Answers

Create a table or view in PostgreSQL that describes the data you want.

Use an ODBC or ADO connection from VBA to connect to PostgreSQL. If using ODBC you'll need to create a DSN via odbcad32.exe then use the DSN in VB, it isn't easy to just connect directly.

See:

  • Using ADO in VBA to connect to PostgreSQL
  • PostgreSQL Query to Excel Sheet
  • http://jackdebear.blogspot.com.au/2011/11/connecting-to-postgres-from-excel.html
  • Enabling import/export flows between a remote postgres database and excel workbooks
  • Does ADO work with ODBC drivers or only OLE DB providers?
  • How to put query results into a datatable with Excel VBA and ADO?

Better written eample that uses Oracle, but the principles are the same - ODBC/ADO.

like image 188
Craig Ringer Avatar answered Oct 30 '22 16:10

Craig Ringer


Here's some code can use as reference. Hope it helps.

Sub SelectBasic()

        Dim objDb_con
        Dim strSomeValue As String

        Set objDb_con = CreateObject("ADODB.Connection")
        Set Rsdatatype = CreateObject("ADODB.RecordSet")

        glbConnString = Trim(ActiveSheet.Range("B1").Value)
        //Connection string format:Driver={PostgreSQL Unicode};Database=MyDB;server=192.16*.*.**;UID=USERID;Pwd=pasword //comment it
        If glbConnString = "" Then
         MsgBox "Enter the Connection String"
        Else:

        objDb_con.Open glbConnString

        strSql = "select strSomeValue  from SOMETABLE where Something=1"
        Rsdatatype.Open strSql, objDb_con, adOpenKeyset, adLockpessimistic
        If Rsdatatype.EOF = False Then strSomeValue = Rsdatatype.Fields(0).Value
        Rsdatatype.Close

        End If
        objDb_con.Close
    End Sub
like image 45
subZero Avatar answered Oct 30 '22 18:10

subZero