Notifications
Clear all

Carregar Imagem da planilha para o userform

5 Posts
2 Usuários
1 Reactions
85 Visualizações
(@romario-wllian-santos-da-silva)
Posts: 53
Trusted Member
Topic starter
 

Ola, como faço para carregar uma imagem da planilha para o Userform quando eu seleciono um nome?

Estou utilizando um codigo que puxa a imagem da planilha para o userform, ele funciona apenas na inicialização, porem, quando voce seleciona outro nome a imagem nao muda.

 

Windows, Sistema 64, notebook, excel 365

 
Postado : 13/11/2024 10:19 pm
(@romario-wllian-santos-da-silva)
Posts: 53
Trusted Member
Topic starter
 

Eu tentei editar, mas nao consegui, tentei apagar mas parece que nao da tambem.

Mas o correto é:

 

Ola, como faço para carregar uma imagem da planilha para o Userform quando eu seleciono um nome no Listbox?

 
Postado : 13/11/2024 10:42 pm
(@adriel1914)
Posts: 2
New Member
 

Private Sub ListBox1_Click()
' Verifica se um item está selecionado na ListBox
If ListBox1.ListIndex >= 0 Then
' Atualiza o TextBox1 com o nome correspondente
TextBox1 = ListBox1.List(ListBox1.ListIndex, 1)

' Carrega a imagem associada ao nome selecionado
Call CarregarImagem
End If
End Sub

Sub CarregarImagem()
Dim nome As String
Dim imgShape As Shape
Dim imgRange As Range
Dim wsFotos As Worksheet
Dim tempPath As String

' Desativa atualizações visuais para evitar que a tela fique piscando
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual

On Error GoTo ErrorHandler

' Referência à planilha onde estão as imagens
Set wsFotos = ThisWorkbook.Worksheets("FOTO")

' Obtém o nome selecionado na ListBox (coluna 1)
nome = ListBox1.List(ListBox1.ListIndex, 1)

' Verifica se o nome existe na planilha "FOTO"
Set imgRange = wsFotos.Columns(1).Find(What:=nome, LookIn:=xlValues, LookAt:=xlWhole)

If Not imgRange Is Nothing Then
' Procura a imagem na mesma linha do nome encontrado
For Each imgShape In wsFotos.Shapes
If Not Intersect(imgShape.TopLeftCell, imgRange.Offset(0, 1)) Is Nothing Then
' Exporta a imagem temporariamente
tempPath = Environ("Temp") & "\" & nome & ".jpg"
imgShape.Copy
With wsFotos.ChartObjects.Add(1, 1, imgShape.Width, imgShape.Height)
.Activate
.Chart.Paste
.Chart.Export tempPath
.Delete
End With

' Carrega a imagem no controle Image1
Image1.Picture = LoadPicture(tempPath)
Exit Sub
End If
Next imgShape
Else
MsgBox "Imagem não encontrada para o nome: " & nome, vbExclamation, "Erro"
Image1.Picture = LoadPicture("") ' Limpa a imagem
End If

Exit Sub

ErrorHandler:
MsgBox "Erro ao carregar a imagem: " & Err.Description, vbCritical, "Erro"
Image1.Picture = LoadPicture("") ' Limpa a imagem
Finally:
' Restaura as configurações após a execução
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
End Sub

Private Sub UserForm_Initialize()
' Limpa a imagem ao inicializar o formulário
Image1.Picture = LoadPicture("")
End Sub

 
Postado : 16/11/2024 10:39 am
(@romario-wllian-santos-da-silva)
Posts: 53
Trusted Member
Topic starter
 

Cara, ficou muito bom. Voce é um Deus do excel. porque nossa, nunca cheguei nessa fase.

Cara e ficou tao bom, que a imagem carrega ate no Segundo formulario quando voce clica 2x no nome.

So umas duvidas

As fotos perdem um pouco a qualidade quando carrega no userform.

Eu queria tirar aquelas bordas pretas da foto, tentei de toda forma(leiga. basica), indo em propriedade e removendo tanto nas imagens ne, e no userform, mas mesmo assim ainda aparece com essas bordas pretas.

No teclado, quando aciona seu codigo as teclas CIMA e BAIXA param de funcionar.

Mano, mais parabens, voce chegou alem de um se humano normal.
Voce é excepcional.
So tenho a agradecer pelo avanço ao projeto.

 
Postado : 16/11/2024 11:02 am
adriel1914 reacted
(@adriel1914)
Posts: 2
New Member
 

Opa, que bom que deu certo!!
Me chama no whats pra ajustarmos a planilha até onde você deseja.
16 992352661

 

 
Postado : 16/11/2024 4:55 pm