VBA (Excel) - Criando um visualizador de imagens - V
Neste artigo vou mostrar como podemos automatizar o Microsoft Excel usando a linguagem VBA para realizar a seguinte tarefa :
|
Na quarta parte do artigo implementamos a seleção e inclusão de uma nova imagem pelo usuário.
Neste artigo vamos implementar a funcionalidade do botão Salvar Detalhes da Imagem (cmdSalvarImagem) que irá fazer o seguinte:
- Pegar a última linha da planilha com
dados e vai para a próxima linha vazia;
- Verificar se as informações da imagem inseridas nas caixas de texto estão
completas;
- Salvar a imagem selecionada na pasta de destino
- Transferir as informações para a planilha;
Transferindo os dados e Salvando a imagem selecionada em uma pasta de destino
Após selecionar uma nova imagem e entrar com suas informações, o usuário deverá clicar no botão de comando - Salvar detalhes da imagem.
Nesse processo a imagem deverá ser salva e as informações deverão ser transferidas do formulário para a planilha Excel.
Para fazer isso, a primeira coisa que devemos fazer é selecionar a última célula da planilha que possui dados:
Por exemplo, na planilha acima a próxima célula vazia seria a linha 8 iniciando na célula A8.
Então definimos o código abaixo que primeiro seleciona a última célula da planilha com dados e incrementa uma linha para ir para a próxima célula vazia:
UltimaLinha = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
Cells(UltimaLinha + 1, 1).Select
O número da linha com dados será armazenado na variável UltimaLinha, e adicionamos uma linha a esta linha para ir para linha onde os dados serão inseridos.
A seguir basta verificar se as informações nas caixas de texto foram digitadas, transferir os dados para a planilha e salvar a imagem na pasta de destino.
Vamos então implementar isso no evento Click do botão Salvar Detalhes da Imagem
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.
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:
Clique duas vezes sobre o botão de comando -Salvar detalhes da Imagem - para abrir o evento Click associado a esse controle.
Neste evento inclua o código abaixo :
Private Sub cmdSalvarImagem_Click()
On Error GoTo Trata_Erro
'pega a última linha da planilha e seleciona
UltimaLinha = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
Cells(UltimaLinha + 1, 1).Select
'verifica se existe uma caixa de texto sem dados
Dim ExisteCaixaTextoVazia As Boolean
ExisteCaixaTextoVazia = VerificaSeExisteCaixaTextoVazia()
If ExisteCaixaTextoVazia = True Then
MsgBox "Uma caixa de texto vazia foi encontrada, informe todas as informações"
Exit Sub
End If
'verifica se a combo esta com dados
If cbo_Camera.Text = "Camera" Or cbo_Camera.Text = "" Then
MsgBox "Nenhuma câmera foi selecionada..."
Exit Sub
End If
'verifica se os radiobuttons foram marcados
If opt_Flash1.Value = False And opt_Flash2.Value = False Then
MsgBox "Nenhuma opção para Flash foi marcada"
Exit Sub
End If
'define as variáveis para a pasta de origem da imagem e a pasta de destino
Dim DiretorioOrigemImagem As String
Dim DiretorioDestinoImagem As String
'define os locais da pasta de origem e destino da imagem
DiretorioDestinoImagem = "c:\Dados\Excel\"
DiretorioOrigemImagem = copiaImagem
'verifica se a pasta de origem é diferente da pasta de destino
If DiretorioOrigemImagem <> DiretorioDestinoImagem Then
'copia a imagem selecionada para a pasta de destino
FileCopy DiretorioOrigemImagem, DiretorioDestinoImagem & txt_NomeArquivo.Text
'transfere os dados do formulário para a planilha
ActiveCell.Value = txt_NomeArquivo.Text
ActiveCell.Offset(, 1).Value = txt_Data.Text
ActiveCell.Offset(, 2).Value = txt_Informacao.Text
ActiveCell.Offset(, 3).Value = txt_Dimensoes.Text
ActiveCell.Offset(, 4).Value = txt_Tamanho.Text
'define os valores dos radiobuttons
If opt_Flash1.Value = True Then
ActiveCell.Offset(, 6).Value = "Sim"
ElseIf opt_Flash2.Value = True Then
ActiveCell.Offset(, 6).Value = "Não"
End If
'aviso o usuário que deu tudo certo
MsgBox "Informações da imagem e nova imagem salva com sucesso na pasta de imagens"
End If
Exit Sub
'trata erros
Trata_Erro:
MsgBox " Ocorreu um erro : " & Err.Description
End Sub
|
Vamos entender o código acima :
Temos o tratamento de erros neste código usando comando : On Error GoTo Trata_Erro
Onde a rotina Trata_Erro irá exibir as mensagens de erros que ocorrem na execução do código.
Abaixo temos o código da rotina Trata_Erro:
Trata_Erro:
MsgBox " Ocorreu um erro : " & Err.Description
1- Obtemos a última linha da planilha com dados e adicionamos uma linha para ir para a próxima linha onde iremos inserir os dados
UltimaLinha = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
Cells(UltimaLinha + 1, 1).Select
2- Verificamos se as informações inseridas pelo usuário nas caixas de texto estão todas completas:
Dim ExisteCaixaTextoVazia As Boolean
ExisteCaixaTextoVazia = VerificaSeExisteCaixaTextoVazia()
If ExisteCaixaTextoVazia = True Then
MsgBox "Uma caixa de texto vazia foi encontrada, informe todas as informações"
Exit Sub
End If
Neste código criamos a rotina VerificaSeExisteCaixaTextoVazia() que retorna True se existir uma caixa de texto vazia.
Private Function VerificaSeExisteCaixaTextoVazia() As Boolean
ExisteCaixaTextoVazia = False
If txt_NomeArquivo.Text = "" Then
ExisteCaixaTextoVazia = True
Exit Function
End If
If txt_Data.Text = "" Then
ExisteCaixaTextoVazia = True
Exit Function
End If
If txt_Tamanho.Text = "" Then
ExisteCaixaTextoVazia = True
Exit Function
End If
If txt_Dimensoes.Text = "" Then
ExisteCaixaTextoVazia = True
Exit Function
End If
End Function
|
3- Verificamos as informações na combobox e nos radiobuttons
If cbo_Camera.Text = "Camera" Or cbo_Camera.Text = "" Then
MsgBox "Nenhuma câmera foi selecionada..."
Exit Sub
End If
If opt_Flash1.Value = False And opt_Flash2.Value = False Then
MsgBox "Nenhuma opção para Flash foi marcada"
Exit Sub
End If
4- Definimos o local de origem e de destino da imagem e usamos o comando
FileCopy para copiar a imagem da pasta de origem para a pasta de destino:
Dim DiretorioOrigemImagem As String
Dim DiretorioDestinoImagem As String
DiretorioDestinoImagem = "c:\Dados\Excel\"
DiretorioOrigemImagem = copiaImagem
If DiretorioOrigemImagem <> DiretorioDestinoImagem Then
FileCopy DiretorioOrigemImagem, DiretorioDestinoImagem & txt_NomeArquivo.Text
5- A seguir transferimos as informações para a planilha, atualizamos os valores dos radiobuttons e avisamos o usuário:
ActiveCell.Value = txt_NomeArquivo.Text
ActiveCell.Offset(, 1).Value = txt_Data.Text
ActiveCell.Offset(, 2).Value = txt_Informacao.Text
ActiveCell.Offset(, 3).Value = txt_Dimensoes.Text
ActiveCell.Offset(, 4).Value = txt_Tamanho.Text
If opt_Flash1.Value = True Then
ActiveCell.Offset(, 6).Value = "Sim"
ElseIf opt_Flash2.Value = True Then
ActiveCell.Offset(, 6).Value = "Não"
End If
MsgBox "Informações da imagem e nova imagem salva com sucesso na pasta de
imagens"
End If
Nota: A pasta de destino das imagens foi definida
como sendo : c:\dados\Excel
mas você pode alterar conforme o seu critério.
O comando FileCopy possui a seguinte sintaxe:
FileCopy source, destination
Onde :
source
- é o local de origem do arquivo
destination - é o local de destino do arquivo
Obs: Se o arquivo de origem estiver aberto vai ocorrer um erro durante a cópia.
Executando o UserForm e selecionando uma imagem e digitando suas informações nas caixas de texto teremos o seguinte resultado:
Clicando no botão para Salvar detalhes da Imagem veremos as informações na planilha e caixa de mensagem informando que a imagem foi salva com sucesso:
Abrindo a pasta de destino das imagens (c:\Dados\Excel) iremos constatar que o arquivo imagem foi salvo realmente:
É assim concluímos o nosso visualizador de imagens e suas informações com a ajuda do Excel e do VBA.
Você pode incrementar o projeto de diversas formas e adaptá-lo para suas necessidades.
Pegue a planilha aqui : VBA_VisualizadorImagens.zip
Dando graças ao
Pai que nos fez idôneos para participar da herança dos santos na luz;
O qual nos tirou da potestade das trevas, e nos transportou para o reino do
Filho do seu amor;
Colossenses 1:12,13
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 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?
|
Visão geral do modelo de objeto Excel: http://msdn.microsoft.com/pt-br/library/wss56bz7.aspx