2012-11-05 4 views
8

SELECT과 같은 쿼리를 Excel의 VBA에서 만들 수 있습니까? Excel에서 PostgreSQL DB를 쿼리 할 수 ​​있습니까?VBA를 통해 Excel을 PostgreSQL에 연결

가능한 경우 데이터베이스에 연결하는 방법을 알려주십시오. Google에서 검색했지만 결과가 없습니다.

답변

6

원하는 데이터를 설명하는 PostgreSQL의 테이블이나 뷰를 생성하십시오.

VBA의 ODBC 또는 ADO 연결을 사용하여 PostgreSQL에 연결하십시오. ODBC를 사용하는 경우 odbcad32.exe을 통해 DSN을 작성한 다음 VB에서 DSN을 사용하면 직접 연결하는 것이 쉽지 않습니다.

참조 :

Better written eample that uses Oracle 그러나 원리는 동일합니다 - ODBC/ADO.

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 
0

64 비트 Windows의 경우에도 Excel VBA에는 32-bit ODBC driver이 필요합니다.

%windir%\SysWOW64\odbcad32.exe을 통해 DSN을 만듭니다. 실제로 odbcad32.exe을 입력하면 기본적으로 적절한 32 비트 드라이버를 찾을 수없는 64 비트 버전을 가리 킵니다.

출처 : https://github.com/windweller/postgresql-excel-addIn (좋은이며 당신보다 자세한 내용을 가지고) 크레이그의 대답은 이미 32 비트 문제를 지적 @

+0

. 당신은이 답변으로 어떤 가치도 정말로 추가합니까? – Alexander

+0

사실 ** ** Craig의 답변이나 StackOverflow의 다른 답변과 함께 ** Excel을 VBA를 통해 PostgreSQL에 연결할 수 없었습니다. 아무도'odbcad32.exe'의 잠재적 문제를 언급하지 않았습니다. 나에게는 분명하지 않을 수도 있지만 웹에 답이없는 스레드의 수가 많아서 나는 혼자가 아니라고 생각합니다. Github의 Excel 추가 기능은 형식 문제로 인해 작동하지 않지만 문구가 따라야 할 절차를 설명하는 것이 좋습니다. 내 대답을 게시하고 싶지 않은 경우 화를 내지는 않지만 나중에 나처럼 똑같은 문제가 발생할 수 있습니다. – Candide

관련 문제