none
Como listar no Excel todas as tabelas de um banco de dados Access via VBA? RRS feed

  • Pergunta

  • Prezados,

    Estou precisando de uma ajuda para identificar todas as tabelas presentes no meu arquivo Access.

    Preciso dessa funcionalidade, pois preciso desenvolver um programa que crie e delete tabelas existentes no banco de dados. Porém, é necessário que o usuário escolha qual tabela deseja excluir. Sendo assim, pensei em criar um comboBox listando todas as tabelas do banco.

    Eu realizo a conexão com o banco da seguinte maneira:

    ------------------------------------------------------------------------------------------------------

    Sub identificarTabelasAccess()

    Dim bancoDados As ADODB.Connection
    Dim consultaDB As ADODB.Recordset
    Dim comandoSQL As String

    'Variável que recebe a conexão com o banco de dados
    Set bancoDados = conectDataBase(Sheets("#config").Range("B3").Value)

    'Define a variável recordset
    Set consultaDB = New ADODB.Recordset

    'Define a variável do recordset
    consultaDB.ActiveConnection = bancoDados

    End Sub

    ------------------------------------------------------------------------------------------------------

    Tentei verificar todas as opções do objeto recordset, mas não consegui identificar nenhuma opção que me trouxesse uma informação sobre o número de tabelas do banco e seus respectivos nomes.

    Desde já agradeço a ajuda!

    Um abraço!

    quinta-feira, 26 de novembro de 2015 18:52

Respostas

  • Referencie a biblioteca Microsoft ADO Ext. 2.8 for DDL and Security e use o código abaixo:

    Sub Main()
        Dim cnn As ADODB.Connection
        Dim cat As ADOX.Catalog
        Dim iTable As ADOX.Table
        
        'Faça a conexão de cnn aqui
        
        Set cat.ActiveConnection = cnn
        For Each iTable In cat.Tables
            Debug.Print iTable
        Next iTable
    End Sub
    


    http://www.ambienteoffice.com.br - http://www.clarian.com.br

    • Sugerido como Resposta André Santo domingo, 29 de novembro de 2015 11:58
    • Marcado como Resposta Hudson Rodrigues domingo, 29 de novembro de 2015 22:08
    quinta-feira, 26 de novembro de 2015 21:56
    Moderador

Todas as Respostas

  • Referencie a biblioteca Microsoft ADO Ext. 2.8 for DDL and Security e use o código abaixo:

    Sub Main()
        Dim cnn As ADODB.Connection
        Dim cat As ADOX.Catalog
        Dim iTable As ADOX.Table
        
        'Faça a conexão de cnn aqui
        
        Set cat.ActiveConnection = cnn
        For Each iTable In cat.Tables
            Debug.Print iTable
        Next iTable
    End Sub
    


    http://www.ambienteoffice.com.br - http://www.clarian.com.br

    • Sugerido como Resposta André Santo domingo, 29 de novembro de 2015 11:58
    • Marcado como Resposta Hudson Rodrigues domingo, 29 de novembro de 2015 22:08
    quinta-feira, 26 de novembro de 2015 21:56
    Moderador
  • Felipe, muito obrigado por me responder. Entretanto, ocorreu um erro conforme imagem abaixo:

    Realizei um simples ajuste no código e funcionou. Segue o código ajustado:

    --------------------------------------------------------------------------------------------------------------

    Sub Macro1()
    '
    ' Macro1 Macro
    '
    Dim bancoDados As ADODB.Connection
    Dim cat As ADOX.Catalog
    Dim iTable As ADOX.Table

    'Variável que recebe a conexão com o banco de dados
    Set bancoDados = conectDataBase(Sheets("#config").Range("B3").Value)

    Set cat = New ADOX.Catalog  <<<<------ ADICIONEI ESTA LINHA

    Set cat.ActiveConnection = bancoDados

    End Sub

    --------------------------------------------------------------------------------------------------------------

    Muito obrigado!

    Um abraço,

    Hudson

    sexta-feira, 27 de novembro de 2015 00:31
  • Ah sim, claro, esqueci de instanciar o objeto.

    Obrigado pela correção.


    http://www.ambienteoffice.com.br - http://www.clarian.com.br

    sexta-feira, 27 de novembro de 2015 15:31
    Moderador