Jump to content
Douken

VBA - Carregar Imagem em Userform

Recommended Posts

Douken

Boa noite.

Pretendo carregar num Userform um dos ficheiros de imagem existentes num dirétorio, com base na informação introduzida numa textbox desse userform.

E.g.: Tenho os ficheiros 1.jpeg; 2.jpeg; 3.jpeg. Se na textbo1 digitar 1, no campo de imagem do userform abre-se o jpeg 1.jpeg.

Obrigado

Cumprimentos.

Share this post


Link to post
Share on other sites
manuel antonio

Experimenta este código se as imagens estiverem numa pasta:

1º- declara estas variáveis fora dos módulos ( antes de todas as linhas de código)

Option Explicit

Dim SEARCH_PATH As String

Dim Images() As Variant

Depois, cola esta função:

Function CaminhoExiste(sCaminho As String) As Boolean
    'Testa se um caminho ou arquivo existe (ou é válido)
    
    If sCaminho = vbNullString Then
        CaminhoExiste = False
    Else
        CaminhoExiste = True
    End If
    
    'A forma abreviada da função pode ser escrita como:
    'CaminhoExiste = Dir(sCaminho) <> vbNullString
End Function

Por fim, adapta este código à tua necessidade.

 

'AQUI COLOCAS A CONDIÇÃO EXIGIDA PARA RODAR O CÓDIGO.

Dim NumFiles As Long
Dim iDir As String
Dim SEARCH_PATH As String
Image1.Picture = Nothing


    SEARCH_PATH = ThisWorkbook.Path & "\FOTOS\3D\" 
'ALTERA AS PASTAS DE ACORDO COM AS TUAS.

     iDir = Dir(SEARCH_PATH & "*.jp*g")

            Do While iDir <> ""
                NumFiles = NumFiles + 1
                ReDim Preserve Images(1 To NumFiles)
                Images(NumFiles) = SEARCH_PATH & iDir
                
                iDir = Dir
            Loop
            
Image1.Picture = LoadPicture(Images(1))

 

Share this post


Link to post
Share on other sites
Douken

Tentei, mas diz-me que a compilação não é compatível com a versão que estou a utilizar... Eu preparei-o para correr em Vba 6, Vba7, 32 e 64 bits... Talvez tenha a ver com isso..

Em alternativa fiz o seguinte código:

 

Private Sub obterimagem_Click()

img = cc_box + ".jpeg"
Call ObtemImagens


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 = img.Value
DiretorioImagem = "C:\PROGRAMA\FOTO"
'obtem o caminho completo da imagem
CaminhoCompletoImagem = DiretorioImagem & NomeImagem
'carrega a imagem no controle

If Dir(CaminhoCompletoImagem) = "" Then
   MsgBox "Não foi possível carregar a imagem"
   Image4.Picture = Nothing
   
Else
   Image4.Picture = LoadPicture(CaminhoCompletoImagem)
   Image4.PictureSizeMode = 3

   
End If

End Sub

 

Estava a funcionar bem até eu mudar o dirétorio da imagem. Agora, sempre que eu tenho correr a macro, diz-me que "não é possível carregar a imagem". Mesmo que eu volte a colocar o dirétorio antigo, acontece-me isso. Consegues perceber porquê?

 

Obrigado pela ajuda.

 

Cumprimentos

Share this post


Link to post
Share on other sites
manuel antonio

Boa noite.

Não consigo sinceramente perceber o porquê.

Em 23/03/2018 às 21:04, Douken disse:

img = cc_box + ".jpeg"

No VBA que eu conheço embora pouco, a concatenação de termos, faz-se com "&" e não com "+".

Aqui, colocas o ficheiro com extensão .jpeg. Todas as imagens têm esta extensão? Não serão algumas .jpg por exemplo?

Os nomes dos ficheiros, são 1,2,3,...n.

Declaras :

"Dim NomeImagem As String" e depois atribuis à variavel "NomeImagem" o valor de "img.Value". Não deveria ser "Text"?

Edited by manuel antonio

Share this post


Link to post
Share on other sites
Gnrtuga

Boas, assim um bocadinho à pressa e sem tempo de ver como deve de ser, o erro deve de ser a falta da barra de separação entre o diretório e o nome da imagem... 

Boa sorte.

NomeImagem = img.Value
DiretorioImagem = "C:\PROGRAMA\FOTO"
'obtem o caminho completo da imagem
CaminhoCompletoImagem = DiretorioImagem & NomeImagem
  
  
  'caminho certo
  CaminhoCompletoImagem = DiretorioImagem & "\" & NomeImagem 
  'nota não sei se tem que ser com duas barras por se tratar de caracteres especiais

 

Edited by Gnrtuga
Falta de código

Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!)

Nunca mais é verão outra vez.. :)

Share this post


Link to post
Share on other sites
Douken
Em 25/03/2018 às 03:17, manuel antonio disse:

Boa noite.

Não consigo sinceramente perceber o porquê.

No VBA que eu conheço embora pouco, a concatenação de termos, faz-se com "&" e não com "+".

Aqui, colocas o ficheiro com extensão .jpeg. Todas as imagens têm esta extensão? Não serão algumas .jpg por exemplo?

Os nomes dos ficheiros, são 1,2,3,...n.

Declaras :

"Dim NomeImagem As String" e depois atribuis à variavel "NomeImagem" o valor de "img.Value". Não deveria ser "Text"?

 

Em 25/03/2018 às 07:20, Gnrtuga disse:

Boas, assim um bocadinho à pressa e sem tempo de ver como deve de ser, o erro deve de ser a falta da barra de separação entre o diretório e o nome da imagem... 

Boa sorte.


NomeImagem = img.Value
DiretorioImagem = "C:\PROGRAMA\FOTO"
'obtem o caminho completo da imagem
CaminhoCompletoImagem = DiretorioImagem & NomeImagem
  
  
  'caminho certo
  CaminhoCompletoImagem = DiretorioImagem & "\" & NomeImagem 
  'nota não sei se tem que ser com duas barras por se tratar de caracteres especiais

 

Resultou! Obrigado pela ajuda. Vocês são impecáveis! 

Um abraço!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.