VBA -  Exibindo informações de um cadastro com Imagens - Álbum de Fotos (Excel)


Neste artigo vou mostrar como podemos automatizar o Microsoft Excel usando a linguagem VBA(Visual Basic for Application) criando um formulário para exibir informações e imagens.

Você pode considerar este exemplo como parte de uma aplicação maior cujo objetivo é apenas exibir as informações e imagens de um cadastro existente.

Os recursos usados no projeto deste artigo foram:

Antes de iniciar temos que realizar duas configurações no Microsoft Excel 2007:

Obs: A necessidade de habilitar a execução de macros é que por padrão, o Excel coloca um nível de segurança mais elevado pois códigos maliciosos podem ser executados em scripts através de macros no Excel.

Vamos ativar a guia do desenvolvedor e logo  em seguida habilitar a execução de macros.

Para ativar a guia do desenvolvedor (se ainda não estiver ativa) siga os seguintes passos:

Abra o Excel 2007 e ative o Menu principal de opções clicando no botão superior a esquerda, conforme a figura abaixo;

A seguir clique na guia Opções do Excel para abrir a janela - Opções do Excel;

Nesta janela, selecione o item - Mais Usados - e a seguir marque o item - Mostrar guia Desenvolvedor na Faixa de Opções e clique no botão OK;

No menu do Excel selecione a guia do Desenvolvedor e em seguida clique em Segurança de Macro;

Na janela Central de Confiabilidade selecione a opção - Configurações de Macro - e marque o item para habilitar todas as macros conforme a figura abaixo:

Pronto , feito isso já podemos iniciar o desenvolvimento da aplicação VBA no Excel 2007.

Abra então o Excel 2007 , será aberta uma planilha em branco. Clique então no botão no canto superior a esquerda para abrir o menu principal de opções;

Selecione a opção Salvar como e clique no item : Pasta de Trabalho Habilitada para Macro do Excel;

Em seguida informe o nome do arquivo : AlbumDeFotos

Será aberta o arquivo Excel exibindo as três planilhas padrão: Plan1, Plan2 e Plan3;

Vamos definir o papel de cada planilha em nosso projeto Excel;

Vamos começar com a planilha Plan1

Nesta planilha teremos 5 colunas : Id, Nome, Sexo, Nascimento e Foto

Cada coluna conterá informações de celebridades que morreram aos 27 anos (triste não é mesmo...).

Teremos também a coluna onde iremos indicar o local onde serão armazenadas as imagens das celebridades que iremos exibir em nosso formulário VBA.

A célula F2 contém o valor c:\_vba\Imagens que é a pasta onde estão armazenadas as imagens das celebridades. Abaixo vemos essa pasta e as imagens:

Observe que cada imagem é identificada pelo nome da celebridade sem espaços. Ex: JanisJoplin.jpg

Note que temos uma imagem chamada SemFoto.jpg que será exibida quando a celebridade não possuir uma foto.

Obs:Poderíamos usar outro sistema atribuindo um número que correspondesse ao código da celebridade no cadastro por exemplo.

Pois bem, temos as informações da planilha Plan1 e as imagens na pasta c:\_vba\Imagens que queremos exibir em um formulário VBA.

Criando o formulário para exibir as informações e imagens

Com a planilha Excel aberta pressione as teclas ALT+F11. Se preferir clique no menu Desenvolvedor e a seguir na opção Visual Basic.

Isso abrira o Editor Visual Basic; No editor Visual Basic clique no menu Inserir e a seguir em UserForm;

Um novo formulário chamado UserForm será criado na área de trabalho do Editor.

Ao seu lado irá aparecer a Caixa de Ferramentas contendo os controles que vamos usar para criar o formulário;

À sua direita temos a Janela de Propriedades do controle selecionado que iremos usar para definir o nome e outras propriedades dos controles;

Vamos então arrastar a partir da caixa de ferramentas os seguintes controles para o formulário e a seguir vamos alterar as propriedades indicadas conforme abaixo:

De forma que leiaute do formulário tenha a seguinte aparência:

Agora vamos definir o código necessário para carregar as informações da planilha Plan1, obter a respectiva imagem na pasta c:\_vba\Imagens e exibir no formulário.

Para isso vamos usar o evento Change da caixa de texto txtId.

Clique duas vezes na caixa de texto txtId para abrir o evento Change associado a este botão de comando ou clique com o botão do mouse sobre o botão e a seguir clique em Exibir Código;

Digite o código abaixo no evento Click da caixa de Texto txtId :

'trata o evento Change do controle textBox
Private Sub txtId_Change()
'define as variáveis usadas
Dim arquivo
Dim nomeFoto
'define a label para tratar erros
On Error GoTo TrataErro
'monta o arquivo de imagem obtem o caminho na célla F2
arquivo = Sheets("Plan1").Range("F2") & "SemFoto.jpg"
'defina a imagem no controle e o modo de exibição
Set imgFoto.Picture = LoadPicture(arquivo)
imgFoto.PictureSizeMode = fmPictureSizeModeZoom
'limpa o nome e nascimento
txtNome = ""
txtNascimento = ""
txtSexo = ""
'define o caminho das imagens
Set endereco = Sheets("Plan1").Range("F2")
linha = 2
'Percorre cada linha da planilha na coluna 1 até encontrar uma célula vazia
Do Until Sheets("Plan1").Cells(linha, 1) = ""
    If txtId.Text = Sheets("Plan1").Cells(linha, 1) Then
        'pega o nome da planilha na coluna 2
        txtNome = Sheets("Plan1").Cells(linha, 2)
        'remove os espaços do nome
        nomeFoto = Replace(txtNome, " ", "")
        'verifica se a coluna do sexo é M ou F
        If Sheets("Plan1").Cells(linha, 3) = "M" Then
            txtSexo = "Masculino"
        Else
            txtSexo = "Feminino"
        End If
        'pega a data de nascimento da coluna 4
        txtNascimento = Sheets("Plan1").Cells(linha, 4)
        'define o nome do arquivo de imagem com extensão .jpg
        arquivo = endereco & nomeFoto & ".jpg"
        'verifica se a foto ou a imagem padrão será exibida
        'Para olha na coluna 5 e verifica se o valor é N ou S
        If Sheets("Plan1").Cells(linha, 5) = "N" Then
                arquivo = endereco & "SemFoto.jpg"
        End If
        'carrega o arquivo da iamgem
        Set imgFoto.Picture = LoadPicture(arquivo)
        'define o modo de exibição da imagem no controle
        imgFoto.PictureSizeMode = fmPictureSizeModeZoom
    End If
    'incrementa a linha
    linha = linha + 1
Loop
'sai
Exit Sub
'faz o tratamento de erros
TrataErro:
   MsgBox ("Ocorreu um erro: " & Err.Description)

End Sub

No código acima apenas quero destacar  a linha de código :  nomeFoto = Replace(txtNome, " ", "")

onde usamos a função Replace() para remover os espaços dos nomes de forma a podermos identificar a respectiva foto visto que ela esta armazenada com o nome sem espaço.

Agora vamos definir o código do evento Click do botão cmdSair.

Clique duas vezes no botão Sair para abrir o evento Click associado a este botão de comando ou clique com o botão do mouse sobre o botão e a seguir clique em Exibir Código;

Digite o código abaixo no evento Click do botão Sair :

Private Sub cmdSair_Click()
  'descarrega o formulário
  Unload frmCadastro
End Sub

O código acima descarrega o formulário e retorna a planilha Excel.

Definindo Macros

O que é uma macro?

Uma macro é uma coleção de comandos que você pode aplicar com um único clique. As macros podem automatizar quase tudo que seja possível executar no programa que você está usando e até mesmo permitem fazer coisas que talvez você não soubesse que fossem possíveis.

As macros são programação, mas para usá-las, você não precisa ser um desenvolvedor e nem mesmo ter conhecimento de programação. A maioria das macros que você pode criar nos programas do Office são escritas em uma linguagem chamada Microsoft Visual Basic for Applications, ou VBA.

Em muitos programas do Office, você pode criar uma macro gravando uma série de ações ou escrevendo a macro. Vamos escrever uma macro que será usada para abrir o formulário frmCadastro.

Para isso vamos incluir um Módulo em nosso projeto a partir do menu Inserir -> Módulo;

Após essa operação digite o código abaixo no módulo inserido:

Sub ExibeFormulario()
    frmCadastro.Show
End Sub

Este código usa o método Show que exibe um objeto UserForm chamado frmCadastro.

Criamos assim o código em uma Macro pois vamos abrir o formulário frmCadastro a partir da planilha Excel.

Carregando o formulário para exibir as informações e as imagens

Retorne à planilha Excel e ativando a guia do desenvolvedor vamos incluir um controle Botão na planilha clicando na opção Inserir e selecionando o controle Botão:

Após selecionar o Botão coloque-o na planilha Excel. Fazendo isso de imediato será aberta a janela atribuir macro, exibindo a macro que criamos no  Módulo.

Selecione a macro ExibeFormulario e clique em OK;

Com isso atribuímos a macro ExibeFormulario criada ao botão de comando da planilha:

A seguir selecione o botão e altere o texto do Botão para Álbum de Fotos de Celebridades;

Pronto ! Estando na planilha Excel e clicando no botão Álbum de Fotos de Celebridades teremos o formulário carregado conforme abaixo:

Digitando na caixa de texto Id (txtId) o número correspondente ao código de um registro da planilha iremos ver as informações e a imagem carregada no controle imgFoto:

Aguarde outros artigos sobre VBA onde irei mostrar como podemos realizar as operações para cadastrar, alterar e excluir informações.

Pegue a planilha com o código VBA aqui: AlbumDeFotos.zip (sem as fotos)

João 8:58 Respondeu-lhes Jesus: Em verdade, em verdade vos digo que antes que Abraão existisse, eu sou.


Veja os Destaques e novidades do SUPER DVD VB (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Veja mais sistemas completos para a plataforma .NET no Super DVD .NET , confira...

Quer aprender C# ??

Chegou o Super DVD C# com exclusivo material de suporte e vídeo aulas com curso básico sobre C#
 

 

             Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

 

Referências:


José Carlos Macoratti