VBA (Excel) - Criando um visualizador de imagens - III
Neste artigo vou mostrar como podemos automatizar o Microsoft Excel usando a linguagem VBA para realizar a seguinte tarefa :
|
Na segunda parte do artigo implementamos a carga das informações da planilha Plan1 no formulário UserForm incluindo a exibição da imagem. Vamos agora implementar a navegação pelas informações e imagens da planilha.
Implementando a navegação pelas imagens
Abra então o Excel 2007 e clique no menu Abrir e selecione a planilha que criamos no artigo anterior: VBA_VisualizadorImagens
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 abrirá o Editor Visual Basic;
No menu Exibir clique em Project Explorer para visualizar os objetos do nosso projeto VBA.
Clicando no objeto UserForm1 e a seguir na guia Ver Fotos, veremos o nosso formulário criado no artigo anterior.
Vamos incluir o código que irá permitir navegar pelas imagens existentes. Para isso vamos usar o evento Click dos botões de comando Imagem Anterior e Imagem Posterior.
Clique duas vezes sobre o botão de comando - << Imagem Anterior - para abrir o evento Click associado a esse controle.
Neste evento inclua o código abaixo:
Private Sub cmdAnterior_Click()
ActiveCell.Offset(-1, 0).Select
If ActiveCell.Row = 1 Then
MsgBox "Primeira Linha"
ActiveCell.Offset(1, 0).Select
Exit Sub
Else
Call PegaDadosPlanilha
Call PegaValoresBotoes
Call ObtemImagens
End If
End Sub
|
Para se mover para a imagem anterior na planilha basta usar o comando : ActiveCell.Offset(-1, 0).Select
Onde Offset(-1,0) move para célula anterior da planilha onde -1 refere-se ao valor da Linha(Row) e o 0 ao valor da coluna (Column) e assim retornamos uma linha na mesma coluna.
Depois verificamos se estamos na primeira linha (Row=1) e em caso positivo exibimos uma mensagem de que estamos na primeira linha e usamos comando para posicionarmos nesta linha: ActiveCell.Offset(1, 0).Select
Se não estivermos na primeira linha então chamamos as rotinas para pegar os dados da planilha, exibir os valores dos botões de rádio e exibir as imagens:
Call PegaDadosPlanilha
Call PegaValoresBotoes
Call ObtemImagens
Agora clique duas vezes sobre o botão de comando - << Imagem Posterior - para abrir o evento Click associado a esse controle.
Neste evento inclua o código abaixo:
Private Sub cmdPosterior_Click()
ActiveCell.Offset(1, 0).Select
If ActiveCell.Value = "" Then
MsgBox "Última Linha"
ActiveCell.Offset(-1, 0).Select
Exit Sub
Else
Call PegaDadosPlanilha
Call PegaValoresBotoes
Call ObtemImagens
End If
End Sub
|
A lógica usado no código acima é a mesma do código anterior a diferença é que nos movemos para a imagem posterior da planilha usando o comando: ActiveCell.Offset(1, 0).Select
Depois verificamos se estamos na última linha (Row="") e em caso positivo exibimos uma mensagem de que estamos na última linha e usamos comando para nos posicionarmos nesta linha: ActiveCell.Offset(-1, 0).Select
Agora já temos a funcionalidade completa.
Dessa forma o código completo do nosso UserForm até agora é o seguinte:
Private Sub cmdAnterior_Click()
ActiveCell.Offset(-1, 0).Select
If ActiveCell.Row = 1 Then
MsgBox "Primeira Linha"
ActiveCell.Offset(1, 0).Select
Exit Sub
Else
Call PegaDadosPlanilha
Call PegaValoresBotoes
Call ObtemImagens
End If
End Sub
Private Sub cmdPosterior_Click()
ActiveCell.Offset(1, 0).Select
If ActiveCell.Value = "" Then
MsgBox "Última Linha"
ActiveCell.Offset(-1, 0).Select
Exit Sub
Else
Call PegaDadosPlanilha
Call PegaValoresBotoes
Call ObtemImagens
End If
End Sub
Private Sub cmdCarregarImagem_Click()
'===================================================
'verifica se temos um nome de imagem na célula ativa
'====================================================
If ActiveCell.Column <> 1 Or ActiveCell.Row = 1 Or ActiveCell.Value = "" Then
Cells(2, 1).Select
End If
'=======================================================
' chama a rotina para pegar os dados da planilha Excel
'=======================================================
Call PegaDadosPlanilha
Call PegaValoresBotoes
Call ObtemImagens
cmdAnterior.Enabled = True
cmdPosterior.Enabled = True
End Sub
Private Sub ObtemImagens()
Dim DiretorioImagem As String
Dim CaminhoArquivo As String
Dim CaminhoCompletoImagem As String
Dim NomeImagem As String
'obtem o nome da imagem e o sua pasta
NomeImagem = ActiveCell.Value
DiretorioImagem = "c:\Dados\Excel\"
'obtem o caminho completo da imagem
CaminhoCompletoImagem = DiretorioImagem & NomeImagem
'carrega a imagem no controle
If Dir(CaminhoCompletoImagem) <> "" Then
PicImagem.Picture = LoadPicture(CaminhoCompletoImagem)
PicImagem.PictureSizeMode = 3
Else
MsgBox "Não foi possível carregar a imagem"
End If
End Sub
Private Sub PegaValoresBotoes()
Dim ob As Variant
'pega o valor da célula G da planilha Plan1
ob = ActiveCell.Offset(, 6).Value
If ob = "SIM" Then
optFlash1.Value = True
Else
optFlash2.Value = True
End If
End Sub
Private Sub PegaDadosPlanilha()
txtNomeArquivo.Text = ActiveCell.Value
txtData.Text = ActiveCell.Offset(, 1).Value
txtInformacao.Text = ActiveCell.Offset(, 2).Value
txtDimensoes.Text = ActiveCell.Offset(, 3).Value
txtTamanho.Text = ActiveCell.Offset(, 4).Value
txtCamera.Text = ActiveCell.Offset(, 5).Value
End Sub
Private Sub UserForm_Initialize()
'============================================
'desabilita os botões para navegar e salvar
'============================================
cmdAnterior.Enabled = False
cmdPosterior.Enabled = False
cmdSalvarImagem.Enabled = False
'=======================================
' Inclui itens na caixa de combinação
'========================================
cbo_Camara.AddItem "Samsung GT-I9100"
cbo_Camara.AddItem "iPhone"
cbo_Camara.AddItem "Canon EOS"
cbo_Camara.AddItem "Samsung Galasy 5 S"
End Sub
|
Executando o UserForm e clicando no botão para carregar informação da imagem e realizando a navegação teremos o seguinte resultado:
Agora já podemos visualizar as informações e todas as imagens da planilha.
Assim concluímos a terceira parte deste artigo onde implementamos a navegação pelas informações e pelas imagens.
Na próxima parte do artigo iremos implementar a inclusão de uma nova imagem, onde o usuário poderá selecionar uma nova imagem.
E os
que são de Cristo crucificaram a carne com as suas paixões e concupiscências.
Gálatas 5:24
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
|
Visão geral do modelo de objeto Excel: http://msdn.microsoft.com/pt-br/library/wss56bz7.aspx