Excel VBA- importar tabelas do SQL Server

Olá! Hoje vamos usar o Microsoft Excel para conectar ao nosso banco de dados criado no Microsoft SQL Server, consultar uma tabela e importar seus registros, mas vamos usar um código em VBA para isso.

  • Design-time:
Sub ObterDadosDeBancoDeDados()
    Dim con As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim conString As String
    Dim sqlString As String
        
    Set con = New ADODB.Connection
    Set rs = New ADODB.Recordset
    
    conString = "Provider=SQLOLEDB;" & _
    "Data Source=DESKTOP-CRJM4TM\SQLEXPRESS;" & _
    "Initial Catalog=db_Concessionaria;" & _
    "Integrated Security=SSPI"
    
    sqlString = "SELECT * FROM tb_Veiculo"
    
    con.Open conString
    Set rs = con.Execute(sqlString)
    
    Sheets(1).Range("A2").CopyFromRecordset rs
    
    rs.Close
    con.Close
    
    Set con = Nothing
    Set rs = Nothing
End Sub
  • Runtime:
Planilha que receberá os registros assim que o botão “Obter dados” for acionado.
Resultado obtido ao rodar a subrotina ObterDadosDeBancoDeDados, ilustrada no Microsoft Visual Basic For Applications Editor.
  • Sintaxe:

Para que o código VBA funcione é necessário certificar-se de que a última referência do ADO (ActiveX Data Object) esteja disponível. Isto pode ser conferido e providenciado no menu Ferramentas do Editor de VBA (aberto via teclas Alt+F11):

Este é um exemplo simplificado.

Nas linhas 2-5 são declarados os objetos Connection (conexão física com a fonte de dados) e Recordset (conjunto de registros ou linhas da tabela) e as strings com os parâmetros da conexão e com o comando SQL a ser executado. Em seguida, nas linhas 7-8 e 10-15, os objetos e as strings são inicializados.

As linhas 17-20 contêm a abertura da conexão, a execução do comando SQL e a cópia dos registros na planilha a partir da célula A2.

Finalmente a conexão e o conjunto de registros são fechados (linhas 22-23) e descartados (linhas 25-26).

Curiosidade: também via VBA os registros podem ser obtidos ou importados de diversas fontes, bancos de dados e arquivos, inclusive outras worksheets no mesmo workbook ou não e arquivos de texto/CSV, como ilustrado a seguir.

  • Reflexão:

Além do Congresso aprovar veto à criminalização de fake news, a outra notícia preocupante nesta semana é que as fake news sobre a tragédia e o negacionismo climático no RS estão gerando lucro no YouTube! Enquanto isso, a extrema direita cresce em toda a Europa e em Israel ela ameaça romper com o governo se a nova proposta americana de cessar fogo prosperar.

Leave a comment