【问题标题】:Connecting Excel to PostgreSQL via VBA通过 VBA 将 Excel 连接到 PostgreSQL
【发布时间】:2012-10-25 04:35:33
【问题描述】:

是否可以在 Excel 中从 VBA 进行 SELECT 之类的查询,以便我可以从 Excel 中查询 PostgreSQL 数据库?

如果可能,请解释我如何连接到数据库。我在 Google 中查找,但没有找到任何结果。

【问题讨论】:

    标签: excel postgresql vba odbc ado


    【解决方案1】:

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

    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
    

    【讨论】:

      【解决方案2】:

      在 PostgreSQL 中创建一个表或视图来描述您想要的数据。

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

      见:

      Better written eample that uses Oracle,但原理是一样的——ODBC/ADO。

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

        • @Craig 的回答(很好,比你的更详细)已经指出了 32 位问题。你真的用这个答案增加了任何价值吗?
        • 实际上,我无法通过 VBA 使用 Craig 的答案将 Excel 连接到 PostgreSQL,也没有 StackOverflow 上的所有其他答案。没有人提到odbcad32.exe 的潜在问题。这对某些人来说可能很明显,但对我而言并非如此,而且根据网络上未答复的线程数量,我想我并不孤单。由于格式问题,Github 上的 Excel 插件无法正常工作,但措辞很好地解释了要遵循的过程。如果您不想发布我的答案,我不会生气,但将来会有几个人和我一样遇到同样的问题。
        猜你喜欢
        • 2018-07-28
        • 2022-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多