2012-11-05 19 views
8

È possibile eseguire query come SELECT da VBA in Excel, quindi è possibile interrogare un DB PostgreSQL da Excel?Connessione di Excel a PostgreSQL tramite VBA

Se possibile, spiegami come collegarmi al database. Stavo cercando su Google ma non ho trovato risultati.

risposta

6

Creare una tabella o una vista in PostgreSQL che descriva i dati desiderati.

Utilizzare una connessione ODBC o ADO da VBA per connettersi a PostgreSQL. Se si utilizza ODBC, è necessario creare un DSN tramite odbcad32.exe quindi utilizzare il DSN in VB, non è facile connettersi direttamente.

See:

Better written eample that uses Oracle, ma i principi sono gli stessi - ODBC/ADO.

7

Ecco alcuni codici possono essere utilizzati come riferimento. Spero che sia d'aiuto.

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

Anche per Windows a 64 bit, Excel VBA ha bisogno dello 32-bit ODBC driver.

Creare un DSN tramite %windir%\SysWOW64\odbcad32.exe. Infatti, digitando odbcad32.exe punti verso la versione a 64 bit in cui non è possibile trovare i driver a 32 bit corretto per impostazione predefinita.

Fonte: https://github.com/windweller/postgresql-excel-addIn

+0

@ risposta di Craig (che è buono e ha più in dettaglio della tua) indica già fuori la questione 32bit. Aggiungi davvero qualche valore ad esso con questa risposta? – Alexander

+0

In realtà, io ** non potevo ** collegare Excel a PostgreSQL via VBA con la risposta di Craig, né con tutte le altre risposte su StackOverflow. Nessuno ha menzionato il potenziale problema con 'odbcad32.exe'. Può essere ovvio per alcuni ma non per me e, per il numero di thread senza risposta sul web, credo di non essere solo. Il componente aggiuntivo di Excel su Github non funziona a causa di un problema di formato, ma il testo è eccellente per spiegare la procedura da seguire. Se non vuoi pubblicare la mia risposta, non sarò arrabbiato ma molte persone incontreranno lo stesso problema proprio come me in futuro. – Candide