VBA (Excel) - Criando um visualizador de imagens - IV
Neste artigo vou mostrar como podemos automatizar o Microsoft Excel usando a linguagem VBA para realizar a seguinte tarefa :
|
Na terceira parte do artigo implementamos a navegação pelas informações da planilha Plan1 no formulário UserForm.
Neste artigo vamos implementar a funcionalidade do botão Adicionar uma nova Imagem (cmdAdicionarImagem) que irá fazer o seguinte:
- Abrir uma caixa de diálogo para o
usuário escolher um arquivo de imagem que deseja incluir;
- Obter o nome da imagem e o nome do arquivo completo selecionado;
- Exibir o nome da imagem selecionada na caixa de texto - Nome do Arquivo (txt_NomeArquivo);
Implementando a inclusão de uma nova imagem : Selecionando 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.
Agora clique com o botão direito do mouse sobre UserForm1 e a seguir em Exibir Código:
Na janela do Editor de Código, na parte superior, existem duas caixas de combinação.
Na primeira selecione (Geral) e na segunda selecione (Declaração) e a seguir inclua o código que define as variáveis nomeImagem e copiaImagem na seção de Declaração Geral do UserForm.
Dessa forma
essas variáveis serão visíveis em todo o formulário e serão usadas para salvar a
imagem na próxima etapa do projeto.
Após isso clique no objeto UserForm1 para exibir o UserForm e a seguir clique na guia Adicionar Foto, para ver o nosso formulário criado no artigo anterior.
Clique duas vezes sobre o botão de comando -Adicionar uma nova Imagem - para abrir o evento Click associado a esse controle.
Neste evento inclua o código abaixo que irá permitir o usuário selecionar uma imagem:
Private Sub cmdAdicionarImagem_Click()
'define as variáveis para o diretório inicial e nome do arquivo
Dim DiretorioImagem As String
DiretorioImagem = "c:\Dados\Excel\"
Dim NomeDoArquivo As String
'abre a caixa de diálogo - Abrir Arquivo
With Application.FileDialog(msoFileDialogOpen)
'define valores padrões
.InitialFileName = DiretorioImagem
.Filters.Clear
.Filters.Add "JPEGS", "*.jpg; *.jpeg"
.Filters.Add "GIF", "*.GIF"
.Filters.Add "Bitmaps", "*.bmp"
.AllowMultiSelect = False
'verifica se um arquivo foi selecionado e obtem o seu nome
If .Show = True Then
NomeDoArquivo = .SelectedItems(1)
Else
'se o usuário teclar ESC ou cancelar a operação exibe mensagem
MsgBox "Operação Cancelada"
Exit Sub
End If
End With
' armazena a posição da barra invertida do nome completo do arquivo
Dim PosicaoBarraInvertida As Integer
If NomeDoArquivo <> "" Then
'obtem a posição da última barra invertida
PosicaoBarraInvertida = InStrRev(NomeDoArquivo, "\")
'extrai somente o nome da imagem do nome completo do arquivo
nomeImagem = Mid(NomeDoArquivo, PosicaoBarraInvertida + 1)
'verifica se o arquivo existe
If Dir(NomeDoArquivo) <> "" Then
'carrega o arquivo no controle Image e define o modo de exibição
pic_Imagem.Picture = LoadPicture(NomeDoArquivo)
pic_Imagem.PictureSizeMode = 3
'atribui o nome do arquivo á variável copiaImagem
copiaImagem = NomeDoArquivo
'habilita o botão Salvar
cmdSalvarImagem.Enabled = True
'exibe o nome do arquivo na caixa de texto
txt_NomeArquivo.Text = nomeImagem
Else
MsgBox "Não foi possível Carregar a imagem."
End If
End If
End Sub
|
Vamos entender o código acima :
1- Definimos o diretório onde nossas imagens estão armazenadas e a variável para armazenar o nome do arquivo que o usuário vai selecionar:
Dim DiretorioImagem As
String
DiretorioImagem = "c:\Dados\Excel\"
Dim NomeDoArquivo As String
2- Abrimos a caixa de diálogo - Abrir Arquivo - de definimos alguns valores padrões e obtemos o nome do arquivo selecionado:
(Nota isso é possível pois incluímos o controle
With Application.FileDialog(msoFileDialogOpen)
.InitialFileName = DiretorioImagem
.Filters.Clear
.Filters.Add "JPEGS", "*.jpg; *.jpeg"
.Filters.Add "GIF", "*.GIF"
.Filters.Add "Bitmaps", "*.bmp"
.AllowMultiSelect = False
If .Show = True Then
NomeDoArquivo
= .SelectedItems(1)
Else
MsgBox
"Operação Cancelada"
Exit Sub
End If
End With
3- Extraímos o nome da imagem, verificamos se a imagem existe e exibimos o nome na caixa de texto
'
armazena a posição da barra invertida do nome completo do arquivo
Dim PosicaoBarraInvertida As Integer
If NomeDoArquivo <> "" Then
'obtem a posição da
última barra invertida
PosicaoBarraInvertida = InStrRev(NomeDoArquivo,
"\")
'extrai somente
o nome da imagem do nome completo do arquivo
nomeImagem = Mid(NomeDoArquivo,
PosicaoBarraInvertida + 1)
'verifica se o
arquivo existe
If Dir(NomeDoArquivo) <> "" Then
'carrega o arquivo no controle Image e define o modo de exibição
pic_Imagem.Picture
= LoadPicture(NomeDoArquivo)
pic_Imagem.PictureSizeMode
= 3
'atribui o nome do arquivo á variável copiaImagem
copiaImagem =
NomeDoArquivo
'habilita o botão Salvar
cmdSalvarImagem.Enabled
= True
'exibe o nome do arquivo na caixa de texto
txt_NomeArquivo.Text
= nomeImagem
Else
MsgBox "Não foi
possível Carregar a imagem."
End If
End If
Executando o UserForm e clicando no botão para Adicionar uma nova Imagem veremos a caixa de diálogo aberta conforme figura a seguir:
Selecionando uma imagem o seu nome será exibido na caixa de texto e a imagem no controle Image do Userform conforme figura abaixo:
Agora basta o usuário informa os demais dados nas caixas de texto e salvar a imagem selecionada.
É isso que iremos fazer na última parte do artigo.
Jesus lhes respondeu,
e disse: A minha doutrina não é minha, mas daquele que me enviou.
Se alguém quiser fazer a vontade dele, pela mesma doutrina conhecerá se ela é de
Deus, ou se eu falo de mim mesmo.
Quem fala de si mesmo busca a sua própria glória; mas o que busca a glória
daquele que o enviou, esse é verdadeiro, e não há nele injustiça.
João 7:16-18
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Visão geral do modelo de objeto Excel: http://msdn.microsoft.com/pt-br/library/wss56bz7.aspx