2012-11-05 16 views
8

Czy to możliwe, aby zapytać jak SELECT z VBA w Excelu, więc mogę kwerendy PostgreSQL DB z programu Excel?Podłączanie Excel do PostgreSQL poprzez VBA

Jeśli to możliwe, proszę mi wyjaśnić, jak połączyć się z bazą danych. Szukałem w Google, ale nie znalazłem żadnych wyników.

Odpowiedz

6

Tworzenie tabeli lub widoku w PostgreSQL, który opisuje dane, które chcesz.

Za pomocą ADO lub połączenia ADO z VBA połączyć PostgreSQL. Jeśli korzystasz z ODBC, musisz utworzyć DSN poprzez odbcad32.exe, a następnie użyć DSN w VB, nie jest łatwo po prostu połączyć się bezpośrednio.

Patrz:

Better written eample that uses Oracle, ale zasady są takie same - ODBC/ADO.

7

Oto niektóre kod może służyć jako odniesienie. Mam nadzieję, że to pomoże.

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 
0

Nawet w przypadku 64-bitowego systemu Windows program Excel VBA potrzebuje 32-bit ODBC driver.

Tworzenie DSN poprzez %windir%\SysWOW64\odbcad32.exe. Rzeczywiście, wpisując odbcad32.exe punktów w kierunku 64-bitowej wersji, gdzie nie można znaleźć odpowiednich sterowników 32-bitowych domyślnie.

Źródło: https://github.com/windweller/postgresql-excel-addIn

+0

@ odpowiedź Craiga (co jest dobre i ma więcej szczegółów niż Twoje) już zwraca uwagę na problem 32bit. Czy naprawdę dodajesz do tego jakąś wartość z tą odpowiedzią? – Alexander

+0

Właściwie, ** nie mogłem ** połączyć Excela z PostgreSQL przez VBA z odpowiedzią Craiga, ani z wszystkimi innymi odpowiedziami na StackOverflow. Żaden nie wspomniał o potencjalnym problemie z 'odbcad32.exe'. Może to być oczywiste dla niektórych, ale nie dla mnie, i według liczby wątków bez odpowiedzi w sieci, myślę, że nie jestem sam. Dodatek do programu Excel na Github nie działa z powodu problemu z formatowaniem, ale jego sformułowanie doskonale wyjaśnia procedurę. Jeśli nie chcesz publikować mojej odpowiedzi, nie będę zły, ale kilka osób spotka się z tym samym problemem, tak jak ja w przyszłości. – Candide