Pessoal boa tarde.
Tenho notado que muitos usuários do forum vem em busca de soluções em Excel que utiliza o Access como banco de dados .
Segue aqui um exemplo passo a passo de como enviar do excel para o Access e buscar dados do Access para o Excel.
Vamos começar habilitando o ADO do VBA.
No editor do VBA vá em Ferramentas > referências > Selecione o Microsoft Activex Data Object 2.8 Library e click em OK.
Vamos supor que vc precisa criar um programa que Cadastra Funcionários e precisa armazenar os dados no Access.
Crie um novo projeto no Access salve como o nome de base no C da maquina .
Crie uma tabela com o nome de Banco e ponha as seguintes colunas :
Nome / Cargo / Salario / Setor
Salve e feche o Access.
Abra o editor do VBA , crie um formulário com os seguintes dados :
Inclua 4 textbox e um commandbutton
Renomear os textbox para seus respectivos dados:
txtNome
txtCargo
txtSalario
txtSetor
Duplo click no commandbuton e insira esta macro.
'Declarando Variavel de conecção
Dim Conecção As ADODB.Connection
'Declarando Variavel de armazenamento da dados
Dim Dados As ADODB.Recordset
'Definindo Variavel conecção com nova consulta
Set Conecção = New ADODB.Connection
'Definindo parâmetros para conecção
With Conecção
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Base.mdb"
.Open
End With
'Definindo nova busca e armazenamento dos dados da Tabela
Set Dados = New ADODB.Recordset
'Definindo parâmetros dos dados
Dados.Open "Banco", Conecção, adOpenKeyset, adLockOptimistic, adCmdTable
'Observe que a palavra "banco" representa a tabela
'Criando uma condição para que nenhum dado deixe de ser digitado
If txtNome = "" Or txtCargo = "" Or txtSalario = "" Or txtSetor = "" Then
MsgBox "Preencher todos os campos", vbCritical
Else
'Caso ocorra algum erro , a macro segue
On Error Resume Next
'Inserindo os dados na tabela
With Dados
.AddNew
.Fields("Nome") = txtNome.Value
.Fields("Cargo") = txtCargo.Value
.Fields("Salario") = txtSalario.Value
.Fields("Setor") = txtSetor.Value
.Update
End With
'Encerrando Recordset liberando memória
Dados.Close
Set Dados = Nothing
'Encerrando conecção
Conecção.Close
Set Conecção = Nothing
'Limpando textbox para novo lançamento
txtNome = Empty
txtCargo = Empty
txtSalario = Empty
txtSetor = Empty
'Definindo foco no textbox txtNome
txtName.SetFocus
Para Importar os dados para o excel , crie um módulo e ponha esta macro :
Sub Trazer_Dados()
'Declarando Variavel de conecção
Dim Conecção As ADODB.Connection
'Declarando Variavel de armazenamento da dados
Dim Dados As ADODB.Recordset
'Definindo Variavel conecção com nova consulta
Set Conecção = New ADODB.Connection
'Definindo parâmetros para conecção
With Conecção
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Base.mdb"
.Open
End With
'Definindo nova busca e armazenamento dos dados da Tabela
Set Dados = New ADODB.Recordset
'Definindo parâmetros dos dados
Dados.Open "Banco", Conecção, adOpenKeyset, adLockOptimistic, adCmdTable
'Observe que a palavra "banco" representa a tabela
'Declarando variavel WorkSheet
Dim Xlst As Excel.Worksheet
Set Xlst = Sheets("Plan1")
'Copiando os dados para Plan1
Xlst.Range("A1").CopyFromRecordset Dados
'Criando o Cabeçalho
Range("A1").Select
ActiveCell.Text = "Nome do Funcionario"
ActiveCell.Offset(0, 1).Text = "Cargo"
ActiveCell.Offset(0, 2).Text = "Salario"
ActiveCell.Offset(0, 3).Text = "Setor"
Dados.Close
Set Dados = Nothing
Conecção.Close
Set Conecção = Nothing
End Sub
Testem e vejam se deu certo.
Abraço a todos.
Coloniz@dor
General de Pijama
Registrado
3.8K Mensagens
153 Curtidas