<< Pratica com Excel x Access - Saberexcel >>
Neste tabela do Banco de Dados Access contém:
- Um campo Chamado Nome_Cliente
- Um campo Chamado Cidade
- Um campo Chamado Salario
- Um campo Chamado DataNasc
- Um campo Chamado Nº
Observeração: a base de dados Access.mdb deverá existir dentro do mesmo Diretório
'//=======' Esse exemplo de planilha esta na área de assinantes Saberexcel
' http://www.microsoftexcel.com.br
' - - - - - - - - - - - - - - - - - - - - -'
Sub sbx_ler_bd_access_dao()
'habilite a referencia Microsoft DAO 3.6 dentro de Ferramentas/Referncias
'caso nao estiver em suas referencias procure por (Sistem32/dao360.dll)
Dim bd As Database
Dim rs As Recordset
Set bd = OpenDatabase(ActiveWorkbook.Path & "\access2000.mdb")
Set rs = bd.OpenRecordset("Select * From Cliente")
i = 2
Set rs = bd.OpenRecordset("select count(*) as vNum from cliente")
'//=======' retornando a mensagem número de clientes cadastrados na tabela access
MsgBox "Há [ " & rs("vNum") & " ] clientes cadastrados nesta Tabela Access" & vbCrLf & _
"-----------------------------------" & vbCrLf & _
"Escola Saberexcel VBA Estudos®" & vbCrLf & _
"Treinamentos com Macros, Fórmulas e Funções", vbInformation, "Escola Saberexcel VBA Treinamentos®"
rs.Close
Set rs = bd.OpenRecordset("Select * From Cliente")
i = 2
Do While Not rs.EOF
Cells(i, 1) = rs!Nome_Cliente
Cells(i, 2) = rs!Cidade
Cells(i, 3) = rs!Salario
Cells(i, 4) = rs!DataNasc
Cells(i, 5) = rs!N°
rs.MoveNext
i = i + 1
Loop
End Sub
'//=======' macro usando instrução for para localizar a região usada e limpar dados
''//=======' observe que (dois pontos (:) em códigos significam (Linha debaixo)
Sub sbx_limpar_teste()
Dim i As Single
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
Range("A" & CStr(i)).Resize(, 5).ClearContents: [g11].clearcontents
Next i
Saber1.Label2.Visible = False
End Sub
'//=======' macro para treinamento e teste com visual basic application
Sub sbx_negritando_dados()
Dim vLinha As Single 'declarado como single por ser muito poucas linhas.estude sobre variáveis
Saber1.[a2:e100].Font.Bold = False
Saber2.[a2:e100].ClearContents
Dim i As Single
vLinha = 2
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
If Saber1.Range("b" & CStr(i)) = Saber1.Range("g1") Then
Saber1.Range("a" & CStr(i)).Resize(, 5).Font.Bold = True
Saber1.Range("a" & CStr(i)).Resize(, 5).Copy Saber2.Range("A" & CStr(vLinha))
Saber2.Range("a" & CStr(vLinha)).Resize(, 5).Font.Bold = False
vLinha = vLinha + 1
End If
Next i
'//=======' msgbox retorna vbyesno para acesso a folha de planilha (Saber2)
resp = MsgBox("Dados negritados e copiados para planilha 'Auxiliar' Deseja ver?" & vbCrLf & _
"[ " & vLinha - 2 & " ] Clientes de " & Saber1.Range("g1").Value, vbYesNo + vbInformation, "Escola Saberexcel VBA Estudos®")
'//=======' retornando valor para um label em uma determinada folha de planiha usando uma WorksheetFunctions (poderia ter usado a Variavel (vLinha -2)
Saber2.lbCONTAFILTRO.Caption = "Foram filtrados [ " & Application.WorksheetFunction.CountA(Saber2.Range("a2:a100")) & _ '// Aplicar a var (vLinha) tb retorna num Cliente
" ] clientes da cidade de [ " & Saber1.Range("g1").Value & " ]"
If resp = 6 Then '//====' 6 é igual a sim
Saber2.Select
[a1].Select
End If
End Sub
'//=======' para retornar a folha de planilha (Saber1)
''//=======' observe que sempre uso o nome da folha de código da folha de planilha [que esta fora do parêntese)
'''//=======' porque se seu usuário mudar o nome da folha de planilha na aba de planilha [nao gerará erro]
Sub sbx_voltar_plan1()
Saber1.Select '//=======' uso sempre o nome da 'folha de código da folha de planilha' e nao o nome da 'folha de planilha'.
[f1].Select
End Sub
Aprenda tudo sobre planilhas do Aplicativo Microsoft Excel VBA(Visual Basic Application), sozinho, com baixo custo, praticando com os produtos didáticos Escola Saberexcel VBA Estudos® - Treinamentos com Macros, Fórmulas e Funções.
Baixe o exemplo planilha contendo os macros e procedimentos acima: << Registre-se em nosso Site >>>
Excel vba planilha imprtar dados tabela bd access (59.92 KB)
Comentários
Professor...
Estou usando vba excel associado ao access e tentando fazer algumas consulta SQL:
Dim bd As Database
Dim rs As Recordset
Dim SQLPeriodo As String
Set bd = OpenDatabase(Ac tiveWorkbook.Pa th & "\BDFrota.mdb")
Set rs = bd.OpenRecordset("SQLPeriodo")
'Por Nome e Periodo
SELECT Tabela1.[Código ], Tabela1.[Nome], Tabela1.[Data], Tabela1.[Cidade ], Tabela1.[Estado]
FROM Tabela1
WHERE (((Tabela1.[Nom e])="Teste1") AND ((Tabela1.[Data ]) Between #1/1/2013# And #12/31/2013#));
Só que não estou conseguindo extrair essa consulta na Planilha.
O comando funcionou perfeitamente! Só estou com uma dúvida, o comando para uma tabela com vários registros é lento mesmo ou o problema é aqui só?
Assine o RSS dos comentários