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 :

  • Criar um visualizador de imagens

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 ?


José Carlos Macoratti