Usuário com melhor resposta
Como listar no Excel todas as tabelas de um banco de dados Access via VBA?

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!
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
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
-
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
-