[RESOLVIDO] Como faço pra utilizar imagens de pastas externa?


#1

Tenho um excelente código em VBA que me ajuda muito, porem gostaria que esse código buscasse imagens em pastas separadas e não apenas uma. para entender melhor segua abaixo o código!

Private Sub Worksheet_Change(ByVal Target As Range)

'se der erro ou não puxar imagem vai para a ultima função de deletar
On Error Resume Next

'procura o valor na coluna D e na linha 6, verifica se tem algo ou não, se não tiver delata a FOTO
If Target.Column = 4 And Target.Row = 6 And Target.Value <> "" Then
'Na planilha atual cria o shape onde a aprece a foto e se não encontrar O valoR o shape é deletado
    Me.Shapes.Range(Array("Foto")).Delete
    'cria FullImagePath
    Dim FullImagePath As String
    'Pega a FullImagePath e busca a pasta onde a planilha está salva na pasta Contratos e procura o formato se não achar o formato jpg vai para linha de baixo
    FullImagePath = ThisWorkbook.Path & "\Contratos\" & Target.Value & ".jpg"
    If Dir(FullImagePath) = "" Then
   
        FullImagePath = ThisWorkbook.Path & "\Contratos\" & Target.Value & ".jpeg"
        If Dir(FullImagePath) = "" Then
            FullImagePath = ThisWorkbook.Path & "\Contratos\" & Target.Value & ".png"
                    If Dir(FullImagePath) = "" Then Exit Sub
                   

        End If
    End If
   
   
    'Determinha o no do FullImagePath distança e altura da imagem
    Me.Pictures.Insert(FullImagePath).Select
    With Selection
        .Name = "Foto"
        .Left = 675
        .Height = 500
        .Top = 71
        .ShapeRange.Shadow.Type = msoShadow21 'Adciona sombra
    End With
    'Se não houver erro activar as funções
    Target.Activate
    'se não deleta Shape e não ativa funções
Else
    Me.Shapes.Range(Array("Foto")).Delete
End If

End Sub


#2

@jeffex, quais outras pastas seriam essas? Ficam todas no mesmo diretório?


#3

isso, seria separadas por categorias, por exemplo, carros, bonecos, barcos etc… mas tudo pastas separadas no mesmo diretório onde está salva a planilha.


#4

@jeffex, se estou entendendo onde deseja chegar, você quer trazer diversas imagens e não procurar uma que pode estar em qualquer pasta. Sendo assim será preciso fazer um looping deste código. Pra isso seria preciso eu replicar o seu ambiente aqui para fazer o desenvolvimento, mas é muito difícil replicar com fidelidade. Vou lhe pedir que, se possível, monte um ambiente exemplo (o mais fiel ao ambiente original possível) com sua planilha e pastas, compacte tudo (em ZIP por exemplo) e coloque em algum serviço de nuvem e poste o link aqui. Assim conseguirei desenvolver uma possível solução para o seu caso.


#5

OK, desde já agradeço pela ajuda, e log postarei o link aqui.


#6

Segue o Link com os arquivos zipados…


#7

@jeffex, eu esperava encontrar um ambiente mais fiel à realidade, mas acho que ainda assim entendi a questão e consegui uma solução. Criei algumas variáveis de manipulação de pastas e iterei por elas, ou seja, repeti o seu código pra cada pasta. Naturalmente que agora o endereço é dinâmico.

Resumo da solução:
Criação do objeto FileSystemObject
Criação do objeto Pasta
Criação do objeto SubPasta

Iteração pelas SubPastas
Busca pela imagem na subpasta


#8

cara resolveu mesmo minha situação obrigado pela ajuda!