{"id":424,"date":"2008-06-09T08:56:00","date_gmt":"2008-06-09T08:56:00","guid":{"rendered":"\/blogteste\/post\/2008\/06\/09\/Do-PostgreSQL-para-o-Excel.aspx"},"modified":"2008-06-09T08:56:00","modified_gmt":"2008-06-09T08:56:00","slug":"do-postgresql-para-o-excel","status":"publish","type":"post","link":"https:\/\/rafaelamorim.com.br\/wp\/do-postgresql-para-o-excel\/","title":{"rendered":"Do PostgreSQL para o Excel"},"content":{"rendered":"<p>&nbsp;<\/p>\n<p>Essa dica \u00e9 pra quem precisa importar dados do postgres (ou qualquer outro SGBD) para o excel.<\/p>\n<p>O comando \u00e9 via macro e eu s\u00f3 usei no Excel 2003.<\/p>\n<p><strong><br \/>\nSub 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 String, rSchema As String)<\/strong><\/p>\n<p>&#8216;Esta fun\u00e7\u00e3o conecta no banco de dados, executa o sql e devolve na celula indicada<br \/>\n&#8216; rSql\u00a0\u00a0\u00a0\u00a0\u00a0 =&gt; Comando a ser executado<br \/>\n&#8216; rPlaSaida =&gt; Nome da planilha onde os dados v\u00e3o retornar. Se em branco, retorna na atual<br \/>\n&#8216; rCelSaida =&gt; Endere\u00e7o de C\u00e9lula onde os dados v\u00e3o sair. Se em branco, retorna na A5<br \/>\n&#8216; rIP\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 =&gt; IP do servidor<br \/>\n&#8216; rPorta\u00a0\u00a0\u00a0 =&gt; Porta onde conectar<br \/>\n&#8216; rBanco\u00a0\u00a0\u00a0 =&gt; Nome do Banco de Dados<br \/>\n&#8216; rUsuario\u00a0 =&gt; Nome do Usuario<br \/>\n&#8216; rSenha\u00a0\u00a0\u00a0 =&gt; Senha do Usu\u00e1rio<br \/>\n&#8216; rSchema\u00a0\u00a0 =&gt; Schema a considerar<\/p>\n<p>Dim cnt As ADODB.Connection<br \/>\nDim rst As ADODB.Recordset<br \/>\nDim stSQL As String<br \/>\nDim wbBook As Workbook<br \/>\nDim wsSheet As Worksheet<br \/>\nDim rnStart As Range<br \/>\nDim stADO As String<\/p>\n<p>&#8216; valida planilha de saida<br \/>\nIf rPlaSaida &lt;&gt; &#8220;&#8221; Then<br \/>\nSheets(rPlaSaida).Select<br \/>\nEnd If<\/p>\n<p>&#8216; valida celula de saida<br \/>\nIf rCelSaida = &#8220;&#8221; Then<br \/>\nrCelSaida = &#8220;A5&#8221;<br \/>\nEnd If<\/p>\n<p>stADO = &#8220;Driver={PostgreSQL UNICODE};Server=&#8221; &amp; rIP &amp; &#8220;;Port=&#8221; &amp; rPorta &amp; &#8220;;Database=&#8221; &amp; rBanco &amp; &#8220;;Uid=&#8221; &amp; rUsuario &amp; &#8220;;Pwd=&#8221; &amp; rSenha &amp; &#8220;;&#8221;<\/p>\n<p>Set wbBook = ActiveWorkbook<br \/>\nSet wsSheet = wbBook.Worksheets(rPlaSaida)<\/p>\n<p>With wsSheet<br \/>\nSet rnStart = .Range(rCelSaida)<br \/>\nEnd With<\/p>\n<p>stSQL = rSql<\/p>\n<p>Set cnt = New ADODB.Connection<\/p>\n<p>With cnt<br \/>\n.CursorLocation = adUseClient<br \/>\n.Open stADO<br \/>\n.CommandTimeout = 5000000<br \/>\nSet rst = .Execute(stSQL)<br \/>\nEnd With<\/p>\n<p>&#8216;Here we add the Recordset to the sheet from A1<br \/>\nrnStart.CopyFromRecordset rst<\/p>\n<p>&#8216;Cleaning up.<br \/>\nrst.Close<br \/>\ncnt.Close<br \/>\nSet rst = Nothing<br \/>\nSet cnt = Nothing<\/p>\n<p>End Sub<\/p>\n<p>&nbsp;<\/p>\n<p>D\u00e1 pra fazer gravando uma macro usando a importa\u00e7\u00e3o de dados externos do excel. Mas ai depende de ter uma odbc na maquina e o resultado nao sai da tabela (at\u00e9 sai, mas da muito trabalho), o que aumenta o tamanho dela.<\/p>\n<p>&nbsp;<\/p>\n<p>\u00c9 isso. Abra\u00e7os!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; Essa dica \u00e9 pra quem precisa importar dados do postgres (ou qualquer outro SGBD) para o excel. O comando \u00e9 via macro e eu s\u00f3 usei no Excel 2003. 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 String, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,12,19,20],"tags":[],"class_list":["post-424","post","type-post","status-publish","format-standard","hentry","category-banco-de-dados","category-dicas","category-programacao","category-ti"],"_links":{"self":[{"href":"https:\/\/rafaelamorim.com.br\/wp\/wp-json\/wp\/v2\/posts\/424","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rafaelamorim.com.br\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rafaelamorim.com.br\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rafaelamorim.com.br\/wp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rafaelamorim.com.br\/wp\/wp-json\/wp\/v2\/comments?post=424"}],"version-history":[{"count":0,"href":"https:\/\/rafaelamorim.com.br\/wp\/wp-json\/wp\/v2\/posts\/424\/revisions"}],"wp:attachment":[{"href":"https:\/\/rafaelamorim.com.br\/wp\/wp-json\/wp\/v2\/media?parent=424"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rafaelamorim.com.br\/wp\/wp-json\/wp\/v2\/categories?post=424"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rafaelamorim.com.br\/wp\/wp-json\/wp\/v2\/tags?post=424"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}