Carregar Imagem da Planilha para o Userform

Anônima
2024-11-13T14:58:36+00:00

oi, tem como carregar uma imagem da planilha para o Userform?

Tenho um projeto onde inicio o Userform a imagem carrega, mas quando mudo de nome no listbox nao carrega nenhuma imagem.

Alguem consegue me ajudar?

Eis o codigo:

Private Sub UserForm_Initialize()
Dim cObj As ChartObject, iPath
Application.ScreenUpdating = False
With ActiveSheet.Shapes("Imagem 1")
Set cObj = ActiveSheet.ChartObjects.Add(.Left, .Top, .Width, .Height)
.Copy: cObj.Select: cObj.Chart.Paste
iPath = Environ("Temp") & "" & Format(Now, "hhmmss") & ".jpg"
cObj.Chart.Export iPath
End With
Image1.Picture = LoadPicture(iPath)
cObj.Delete
End Sub

LINK pra baixar 22 - LISTBOBOX COM IMAGEM NA PLANILHA.xlsm

Windows, Excel 365, notebook, sistema 64

Microsoft 365 e Office | Instalar, resgatar, ativar | Outro | Outro

Pergunta bloqueada. Essa pergunta foi migrada da Comunidade de Suporte da Microsoft. É possível votar se é útil, mas não é possível adicionar comentários ou respostas ou seguir a pergunta.

0 comentários Sem comentários

4 respostas

Classificar por: Mais útil
  1. Anônima
    2024-11-15T01:34:42+00:00

    Esta resposta foi traduzida automaticamente. Como resultado, pode haver erros gramaticais ou palavras estranhas.

    Caro Romário Wllian,

    Obrigado pela sua resposta.

    Eu entendo sua necessidade e sua ideia é ótima. Tenho certeza de que isso tornará mais fácil para outros usuários usarem e podem ficar agradavelmente surpresos com o quão bem isso funciona.

    Sugiro que você tente postar sua pergunta na comunidade acima, onde também há pessoas de suporte que conhecem o VBA e usuários que adoram e podem ter sugestões melhores.

    Espero que você possa implementar isso com sucesso e desejo-lhe tudo de bom.

    Atenciosamente

    Isabella-MSFT | Especialista em suporte da comunidade Microsoft

    Esta resposta foi útil?

    1 pessoa achou esta resposta útil.
    0 comentários Sem comentários
  2. Anônima
    2024-11-17T14:02:41+00:00

    Oi, consegui ter avanço no projeto, mas ainda nao esta concluido.

    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, as teclas CIMA e BAIXA pararam de funcionar.

    Caso alguem consiga ajudar.

    Code:

    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

    22 - LISTBOBOX COM IMAGEM NA PLANILHA.xlsm

    Esta resposta foi útil?

    0 comentários Sem comentários
  3. Anônima
    2024-11-14T12:05:24+00:00

    Esse codigo deu erro.
    Nao funcionou.
    A ideia seria mandar o arquivo com as fotos na planilha, porque ai a pessoa so iria desbloquear o arquivo pra poder ativar as macros.

    Ai era so apertar o listbox e selecionar o funcionario que precisasse.

    Eu sei que pode usar uma pasta e colocar as imagens, seria o mais logico e facil.
    Mas digamos se voce for mandar pra alguem, um cliente que nao entende, ele nao vai conseguir sozinho colocar a pasta ou ate mesmo baixar a pasta e ou extrair do zipado.
    Ele vai se perder. Tem gente que nao sabe zipar, gente mais **** ou somente gente que so abre o excel no pc e pronto.

    So achei que ficaria bonito pra uma apresentacao, sabe, diferente, interessante.

    A pessoa ficaria "Nossa, nunca vi isso, como sera que ele fez isso?", sabe?

    Obrigado pelo seu tempo e dedicacao, de coracao.

    Sobre a comunidades que disse acima, eu to com essa 4 comunidades tentando resolver esse assunto. Sites ingles, portugues. kkk. Mas ainda sem uma conclusão.

    Obrigado por tentar

    Esta resposta foi útil?

    0 comentários Sem comentários
  4. Anônima
    2024-11-14T05:09:00+00:00

    Esta resposta foi traduzida automaticamente. Como resultado, pode haver erros gramaticais ou palavras estranhas.

    Caro Romário Wllian,

    Obrigado por visitar a Comunidade Microsoft.

    Eu entendo que você deseja fazer upload de uma imagem de planilha para um formulário de usuário e você tentou o código, eu entendo seus sentimentos.

    Você pode tentar:

    Verifique se a caixa de listagem contém nomes de imagem e se esses nomes correspondem aos nomes de imagem na planilha.

    Adicione o seguinte ao código do formulário do usuário:

    Private Sub UserForm_Initialize()
    
        ' Load the first image on initialisation'
    
        LoadImage ListBox1.Value
    
    End Sub
    
    Private Sub ListBox1_Change()
    
        ' Load the corresponding image when the list box selection is changed.'
    
        LoadImage ListBox1.Value
    
    End Sub
    
    Private Sub LoadImage(imageName As String)
    
        Dim cObj As ChartObject, iPath As String
    
        Application.ScreenUpdating = False
    
        On Error Resume Next  'Prevent Error Interruptions'
    
        With ActiveSheet.Shapes(imageName)
    
            Set cObj = ActiveSheet.ChartObjects.Add(.Left, .Top, .Width, .Height)
    
            .Copy: cObj.Select: cObj.Chart.Paste
    
            iPath = Environ(‘Temp’) & ‘\’ & Format(Now, ‘hhmmss’) & ‘.jpg’
    
            cObj.Chart.Export iPath
    
        End With
    
        Image1.Picture = LoadPicture(iPath)
    
        cObj.Delete
    
        On Error GoTo 0  'Resume Error Handling'
    
    End Sub
    

    Eu gostaria de poder resolver o seu problema, mas parece que o seu problema com o VBA requer um suporte mais especializado, sugiro que você tente buscar ajuda da comunidade abaixo, onde há mais especialistas na área relevante que podem lhe fornecer uma solução melhor.

    Para obter ajuda do centro de suporte relacionado ao VBA, clique neste link.

    Últimas perguntas sobre 'vba' - Stack Overflow(Português)

    Isenção de responsabilidade: este é um site que não é da Microsoft. Esta página parece fornecer informações precisas e seguras. Esteja ciente de anúncios no site que podem promover produtos que geralmente são classificados como PUPs (Produtos Potencialmente Indesejados). Pesquise minuciosamente qualquer produto anunciado no site antes de decidir baixá-lo e instalá-lo.

    Esperamos sinceramente que, se você entrar em contato com o departamento correto, seu problema seja tratado adequadamente. Obrigado pela sua compreensão!

    Atenciosamente

    Isabella-MSFT | Especialista em suporte da comunidade Microsoft

    Esta resposta foi útil?

    0 comentários Sem comentários