通过VBA将Excel连接到PostgreSQL

时间:2012-11-05 10:44:52

标签: excel postgresql vba odbc ado

是否可以在Excel中从VBA进行SELECT查询,这样我就可以从Excel查询PostgreSQL数据库了?

如果可能,请解释我如何连接到数据库。我正在寻找谷歌,但没有找到任何结果。

3 个答案:

答案 0 :(得分:7)

这里有一些代码可以作为参考。希望能帮助到你。

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

答案 1 :(得分:6)

在PostgreSQL中创建一个描述所需数据的表或视图。

使用VBA中的ODBC或ADO连接来连接PostgreSQL。如果使用ODBC,您需要通过odbcad32.exe创建DSN,然后在VB中使用DSN,直接连接并不容易。

请参阅:

Better written eample that uses Oracle,但原则是相同的 - ODBC / ADO。

答案 2 :(得分:0)

即使对于64位Windows,Excel VBA也需要32-bit ODBC driver

通过%windir%\SysWOW64\odbcad32.exe创建DSN。实际上,键入odbcad32.exe指向64位版本,默认情况下找不到合适的32位驱动程序。

来源:https://github.com/windweller/postgresql-excel-addIn