Arquivo da categoria: Access

Dicas sobre o gerenciador de banco de dados do pacote Office

Modelo de Cadastro – Dados no Excel vs Access

excelvsaccessOk, essa pergunta já passou muito tempo da minha cabeça, depois no fórum. Agora, vamos colocar isso em pratos limpos! Hehe…

O Modelo de Cadastro em Excel VBA (que você pode baixar aqui) meio que criou um quase-estigma de que é possível ter um sistema totalmente baseado em Excel, do aplicativo ao banco de dados. Essa segunda parte é a que mais me preocupa.

Tenho que confessar que quando criei o aplicativo, o objetivo foi demonstrar que era possível fazer tudo no Excel com VBA, sem outras dependências. Isso é muito poderoso se pensarmos em termos de negócios, já que o Excel está presente em quase 100% dos computadores corporativos. Isso dá ao usuário que detém esse conhecimento a liberdade de propor soluções complexas e completas sem precisar apelar para ferramentas adicionais, o que é uma realidade no mesmo mundo corporativo. Qualquer coisa “a mais” enfurece qualquer gestor, pois isso se traduz em mais gastos, mais licenças, mais falação com o departamento de infra-estrutura, etc, etc.

Até aqui, acredito que o aplicativo cumpriu seu objetivo. O problema, como dito umas frases atrás, é que a coisa toma proporções quase delirantes, ao ponto de que temos pensamentos sendo levados ao “dá pra fazer tudo no Excel!!!”. De fato, até que dá, até vírus! Alguém aí lembra dos vírus de macro? Enfim, o ponto é, não é porque você PODE que você DEVE fazer isso.

Não me levem a mal, eu acho bacana ver o povo criar versões do Mario (aqui) no Excel ou mesmo Pac-Man. Vale o mérito da conquista, mas no fim, isso é inútil para o mundo no qual o Excel faz sentido existir. Fazer por diversão, ok, mas não espere mais do que alguns “likes” por isso.

Voltando ao Modelo de Cadastro, o uso mais apropriado para ele, agora falando oficialmente (e eu posso! Fui eu que criei [=) é que ele seja um protótipo do que se pretende criar. Ele vai funcionar bem por um tempo, mas se a coisa ficar séria, é preciso dar o próximo passo. Entendo como sério o fato do mesmo começar a ser intensamente utilizado, ser utilizado por 3 ou mais usuários simultâneamente ou, no pior caso, a quantidade de registros começar a crescer generosamente. Se você chegar nesse ponto, já deve ter começado a sofrer alguns problemas de conflito de gravação ou lentidão excessiva.

Pois bem, agora que expus o objetivo máximo da minha criação, pontuei abaixo algumas vantagens e desvantagens da utilizando do modelo de cadastro, ou mesmo outros que a internet oferece, para o uso do Excel como banco de dados em comparação ao Access.

Em Excel
Vantagens

  • É mais fácil manipular os dados e sua estrutura, uma vez que está tudo no Excel

Desvantagens

  • O Excel não manipula bem acesso por múltiplos usuários ao mesmo arquivo, gerando facilmente erros quando de múltiplos acessos
  • É mais fácil corromper a estrutura, seja dos dados como tabela de dados em si, invalidando o aplicativo
  • Como o Excel não é feito para ser um banco de dados, o arquivo cresce rapidamente, prejudicando a performance ou até mesmo corrompendo os dados.
  • Validação, consistência a integridade dos dados é fraca

Em Access
Vantagens

  • Validação, consistência a integridade dos dados é nativa
  • É feito para manipular múltiplos acessos
  • Suporta melhor o crescimento dos dados e do arquivo
  • Conceitos como integridade referencial, chave primária, relacionamentos só estão presentes aqui
  • Para acesso ao banco de dados pelo VBA, não requer o Access instalado

Desvantagens

  • Manipular a estrutura é mais complexo e exige o Access
  • A manutenção do banco de dados exige um mínimo de conhecimento no Access

A lista acima não é absoluta. Ela é baseada em boa parte na experiência que tive com esse modelo. Gostaria inclusive que compartilhassem qualquer experiência que tiveram. Os comentários estão aí embaixo para isso.

Para você que já usa o modelo e quer migrar, nossa linda comunidade no fórum fez uma versão do mesmo, mas funcionando com o banco de dados em Access (aqui).

Existem outras variantes, com foto, com listview (que eu não gosto, mas isso eu explico em outro artigo), e outros que nem sei mais.

Opções não faltam. Opções de como usar, menos ainda. Vai do que sua necessidade demandar ou a do seu negócio.

Modelos – Envio de Email pelo Excel

Mais uma jóia do fórum!

Fruto do esforço do colega Rafael, o modelo é praticamente o mecanismo completo de envio de emails do Microsoft Outlook, sem precisar interagir com ele!

O sistema conta com uma tela para criação do email, anexos e de quebra, um cadastro de contatos armazenados no Access! Abaixo, as telas do sistema:

Tela de Envio de Email
Tela de Envio de Email
Tela de Busca de Contatos
Tela de Busca de Contatos
Tela de Cadastro de Contatos
Tela de Cadastro de Contatos

Simples e fácil de usar, além do aprendizado!

Download do arquivo

 Enviar Email pelo Excel.rar (56.8 KiB)

Bom proveito e obrigado mais uma vez Rafael pela colaboração!

Top 10 Estruturas de Controle no Excel VBA

estrutura-dados
De pronto, adorei a iniciativa e por isso decidi replicar aqui. O site Dummies, aquele que publica a série for Dummies, no português traduzido “para Leigos”, publicou recentemente uma lista das estruturas de controle mais utilizadas no Excel VBA, familiar de todos aqui.

Abaixo segua a lista com exemplos, extraída do post original. Serve como revisão e até um guia de referência:

For – Next

Útil para passar por todos os itens de um Array.

ArraySum = 0
For i = 1 To 10
    ArraySum = ArraySum + MyArray(i)
Next i

For Each – Next

Perfeito para coleções, como um Range de células.

SelectionSum = 0
For Each cell In Selection
    SelectionSum = SelectionSum + cell.Value
Next cell

Do – Loop Until

Para iterar até atingir uma condição. Ótimo para casos de chegar até um limite ainda não conhecido.

Row = 0
Do
    Row = Row + 1
Loop Until Cells(Row, 1).Value = ""
MsgBox "First empty cell is in Row " & Row

Do While – Loop

Semelhando ao anterior, porém, aqui você executa a iteração enquanto uma condição se mantém.

Row = 1
Do While Cells(Row, 1) <> ""
    Row = Row + 1
Loop
MsgBox "First empty cell is in Row " & Row

If – Then

O básico, o testes dos testes! Executar uma ação baseado em uma condição numa simples linha.

If x = 1 Then y = 1

If – Then – End If

Complementando o anterior, quando a ação a ser tomada é mais complexa, é preciso deixá-la um pouco mais completa.

If x = 1 Then
    y = 1
    z = 1
End If

If – Then – Else

E continuando, se o de cima é a parte, eis a contra parte. Se o teste der certo, faça isso. OU, faça aquilo, lembrando sempre do OU, que podem ser vários!

If x = 1 Then y = 1 Else y = 0

If – Then – Else – End If

Do something if a condition is true; otherwise, do something else. Can use multiple statements.

If x = 1 Then
    y = 1
    Z = 1
Else
    y = 0
    Z = 0
End If

Select Case

Quandos as opções são conhecidas (exemplo, dias da semana), torna a leitura mais legível para o programador.

Select Case x
    Case 1
        y = 1
        Z = 1
    Case Is > 1
        y = 2
        Z = 2
    Case Else
        y = 0
        Z = 0
End Select

Goto

Esse dá medo, mas é útil. A instrução Goto te leva a um bloco de código definido. É mais utilizado para tratamento de erros, como no exemplo.

On Error GoTo Oops
'[um montão de código aqui]
Exit Sub
Oops:
MsgBox "Aconteceu um erro!!".

Eis o resumão. Pelo menos para mim foi muito bom!

O post original pode ser visto aqui:

http://www.dummies.com/how-to/content/top-ten-excel-vba-control-structures.html

O autor é John Walkenbach e o conteúdo é do livro Excel VBA Programming For Dummies, 3rd Edition:

Excel VBA Programming For Dummies, 3rd Edition
Excel VBA Programming For Dummies, 3rd Edition

Que também ter versão em português!

http://www.livrariasaraiva.com.br/produto/3419556/programando-o-excel-2007-vba-para-leigos

Bom proveito!

Modelos – Cadastro Entrevista RH em Excel e Access

por Henry-Systems » Seg Nov 05, 2012 12:11 am

Buenas a todos.

Deixo a minha contribuição a todos com o cadastro em Access, integrado com Excel, e login de acesso, adaptado dos nossos amigos:
tomasvasquez, Mauro Coutinho e José Arnaldo.

Senhas das planilhas: 032164.Onofre
Senhas dos codigos VBA: 032164.Onofre
Login e Senha no arquivo login.docx

Dentro do arquivo consta a versão 01, que os combox puxam as informações da planilha dados.
A versão V02 os combox puxam os dados do Access que são referenciadaspelo código abaixo:

Private Sub PopulacboMarcacao()
    Dim Conn As ADODB.Connection
    Dim rst As ADODB.Recordset
    Dim sql As String
 
    Set Conn = New ADODB.Connection
    With Conn
        .Provider = "Microsoft.JET.OLEDB.4.0"
        .ConnectionString = "Data Source=" &amp; ThisWorkbook.Path &amp; "\Banco_Dados.mdb"
        .Open
    End With
 
    sql = "SELECT DISTINCT DESLIGAMENTO_EMPRESA FROM [DESLIGAMENTO_EMPRESA]"
 
    Set rst = New ADODB.Recordset
    With rst
        .ActiveConnection = Conn
        .Open sql, Conn, adOpenDynamic, _
              adLockBatchOptimistic
    End With
 
    Do While Not rst.EOF
        If Not IsNull(rst(0).Value) Then
            cboMarcacao.AddItem rst(0).Value
        End If
        rst.MoveNext
    Loop
 
    ' Fecha o conjunto de registros.
    Set rst = Nothing
    ' Fecha a conexão.
    Conn.Close
 
End Sub
 
Private Sub UserForm_Initialize()
    Call PopulacboMarcacao
End Sub

Dando a possibilidade de se cadastrar os dados que são puxados pelos combox, conforme poderão ver no modelo totalmente funcional.

Caso encontrem bugs reportem e também podem adaptar.

Abaixo seguem algumas imagens da planilha em funcionamento:

Cadastro Entrevista RH - Login
Cadastro Entrevista RH – Login
Cadastro Entrevista RH - Tela de Cadastro
Cadastro Entrevista RH – Tela de Cadastro
Cadastro Entrevista RH - Planilha de Banco de Dados
Cadastro Entrevista RH – Planilha de Banco de Dados

Abraços a todos

Download

Macro – RH – BDAccessV03.rar (300.56 KiB)

Acompanhe a discussão sobre este modelo no fórum através deste link:

http://www.tomasvasquez.com.br/forum/viewtopic.php?t=2327&p=10598