Sub Executa_SQL_PG(rSql As String, rPlaSaida As String, rCelSaida As String, rIP
As String, rPorta As String, rBanco As String, rUsuario As String, rSenha As St
ring, rSchema As String) 'Esta função conecta no banco de dados, executa o sql e devolve na celula indica da ' rSql => Comando a ser executado ' rPlaSaida => Nome da planilha onde os dados vão retornar. Se em branco, reto rna na atual ' rCelSaida => Endereço de Célula onde os dados vão sair. Se em branco, retorna na A5 ' rIP => IP do servidor ' rPorta => Porta onde conectar ' rBanco => Nome do Banco de Dados ' rUsuario => Nome do Usuario ' rSenha => Senha do Usuário ' rSchema => Schema a considerar
Dim cnt As ADODB.Connection
Dim rst As ADODB.Recordset Dim stSQL As String Dim wbBook As Workbook Dim wsSheet As Worksheet Dim rnStart As Range Dim stADO As String ' valida planilha de saida If rPlaSaida <> "" Then Sheets(rPlaSaida).Select End If ' valida celula de saida If rCelSaida = "" Then rCelSaida = "A5" End If stADO = "Driver={PostgreSQL UNICODE};Server=" & rIP & ";Port=" & rPorta & "; Database=" & rBanco & ";Uid=" & rUsuario & ";Pwd=" & rSenha & ";" Set wbBook = ActiveWorkbook Set wsSheet = wbBook.Worksheets(rPlaSaida) With wsSheet Set rnStart = .Range(rCelSaida) End With stSQL = rSql Set cnt = New ADODB.Connection With cnt .CursorLocation = adUseClient .Open stADO .CommandTimeout = 5000000 Set rst = .Execute(stSQL) End With 'Here we add the Recordset to the sheet from A1 rnStart.CopyFromRecordset rst 'Cleaning up. rst.Close cnt.Close Set rst = Nothing Set cnt = Nothing End Sub