Página 1 de 1

VINCULAR IMAGEM A CELULA E BUSCAR COM FUNÇÃO

Enviado: 17 Set 2019 às 10:35
por rit
Bom dia Pessoal,

Preciso vincular imagens a celulas e buscalas com procv ou qualquer outra função, porem preciso alguma forma de carregar essas imagens ja vinculadas a celula.. e depois preciso saber como buscar elas a partir da função para elas aparecerem em outra planilha.. eu encontrei alguns códigos que me ajudaram parcialmente mas ainda esta muito mecanico o negócio que algo mais pratico..

no procedimento atual eu carrego as imagens, reajusto elas com o tamanho que preciso todas tem o mesmo tamanho e depois eu posiciono elas nos locais que eu quero ( essa parte que eu preciso melhorar) alguem pode me ajudar com isso? puxar as imagens com algum tipo de função que ela fique vinculada a celula... esse código abaixo na teoria deveria puxar a imagem mas não esta funcionando não sei por que... se ele redimensionasse a imagem e funciona-se claro ja seria ideal.

conto com a ajuda de voces!
Código: Selecionar todos
Public Function getImage(ByVal sCode As String) As String

    On Error Resume Next ' Indica que no caso de erros de carregamento de imagem deve continuar executando a partir da próxima linha

    Dim sFile As String
    Dim oSheet As Worksheet
    Dim oCell As Range
    Dim oImage As Shape

    Set oCell = Application.Caller ' Célula onde a função foi chamada
    Set oSheet = oCell.Parent      ' Planilha que chamou a função

    ' Procura por uma imagem existente identificada pelo código (que precisa ser único!)
    Set oImage = Nothing
    For I = 1 To oSheet.Shapes.Count
        If oSheet.Shapes(I).Name = sCode Then
            Set oImage = oSheet.Shapes(I)
            Exit For
        End If
    Next I


    ' Se ainda não existir uma imagem com o código, carrega do arquivo e cria-a.
    ' A imagem já é posicionada na exata posição da célula onde a função foi chamada.
    If oImage Is Nothing Then
        sFile = "C:teste\" & sCode & ".jpg"
        Set oImage = oSheet.Shapes.AddPicture(sFile, msoCTrue, msoCTrue, oCell.Left, oCell.Top, oCell.Width, oCell.Height)

        If oImage Is Nothing Then ' Verifica se falhou o carregamento da imagem. Se falhou, adiciona a imagem genérica (com nome fixo)
            Set oImage = oSheet.Shapes.AddPicture("C:teste\inexistente.jpg", msoCTrue, msoCTrue, oCell.Left, oCell.Top, oCell.Width, oCell.Height)
        End If

        oImage.Name = sCode

    ' Caso contrário, se a imagem já existir, garante que ela se posiciona e cabe exatamente dentro da célula
    ' (apenas para o caso do usuário ter movido ou redimensionado manualmente a imagem sem querer)
    Else
        With oImage
            .Left = oCell.Left
            .Top = oCell.Top
            .Width = oCell.Width
            .Height = oCell.Height
        End With
    End If

    ' Retorna nada para a célula (afinal, esta é somente uma função de auxílio)
    getImage = ""

End Function

Re: VINCULAR IMAGEM A CELULA E BUSCAR COM FUNÇÃO

Enviado: 17 Set 2019 às 11:13
por jhonneris
Bom dia meu caro amigo,

Fico feliz em poder ajudá-lo, pois estava buscando a mesma coisa a pouco tempo.
Veja as macros que você quer nesse site abaixo:

http://www.planilhando.com.br/forum/vie ... 10&t=17426#

Agora meu amigo estou em busca de uma macro para adicionar a essas outras, só que uma macro para ativar a função recorte de tela instantâneo. Sendo assim eu criaria um botão que ao escolher a célula e aperta-ló ele abriria o recorte instantâneo de tela, eu faria o recorte da imagem, e automaticamente por causa das outras macros, a imagem se adequaria a célula perfeitamente.
Se souber favor me avise.

Atenciosamente,

Jhon. 8-)

Re: VINCULAR IMAGEM A CELULA E BUSCAR COM FUNÇÃO

Enviado: 17 Set 2019 às 12:11
por rit
Boa tarde,

Essa sua solução de selecionar as fotos não é bem o que preciso, eu preciso que a foto seja selecionada pela função..

Por exemplo se eu colocar o nome da foto de A26 eu coloque a função que eu linkei la encima getimage(a26) e então ela me trague a foto com o dimensionamento pré definido.. é como se fosse um procv na pasta...

Só que a function que eu linkei ela não funciona e nem faz o redimensionamento... eu precisaria que alguem desse uma olhada pra verificar qual o problema.

VINCULAR IMAGEM A CELULA E BUSCAR COM FUNÇÃO

Enviado: 17 Set 2019 às 13:21
por eduardogrigull
Nao seria somente por ter errado o caminho no código?
Ao invés de C:teste\ ponha C:\teste\, em todas as ocasiões

VINCULAR IMAGEM A CELULA E BUSCAR COM FUNÇÃO

Enviado: 17 Set 2019 às 13:29
por rit
Cara pior que não... se fosse isso teria dado certo estou dizendo o que ele deveria fazer pelo que vi na pagina onde peguei esse código. mas não vi funcionar até agora.. eu não sei nem se o código esta certo... por que não funcionou.. eu ja alterei esse caminho da forma correta porem não deu certo...

estou contando com os deuses do VBA para analisar o código e encontrar o pau kkk... e ainda adaptar para ajustar a foto em um tamanho pré determinado.

Re: VINCULAR IMAGEM A CELULA E BUSCAR COM FUNÇÃO

Enviado: 17 Set 2019 às 13:47
por eduardogrigull
Aqui funcionou agora. Converti de funcao para uma Sub normal, e alterei a parte de "Set oCell/oSheet"...
Basta fazer um "Call getImage("Imagem 1")
Código: Selecionar todos
Sub getImage(sCode As String)

    On Error Resume Next ' Indica que no caso de erros de carregamento de imagem deve continuar executando a partir da próxima linha

    Dim sFile As String
    Dim oSheet As Worksheet
    Dim oCell As Range
    Dim oImage As Shape

    Set oCell = ActiveCell ' Célula onde a função foi chamada
    Set oSheet = ActiveSheet       ' Planilha que chamou a função

    ' Procura por uma imagem existente identificada pelo código (que precisa ser único!)
    Set oImage = Nothing
    For I = 1 To oSheet.Shapes.Count
        If oSheet.Shapes(I).Name = sCode Then
            Set oImage = oSheet.Shapes(I)
            Exit For
        End If
    Next I

    ' Se ainda não existir uma imagem com o código, carrega do arquivo e cria-a.
    ' A imagem já é posicionada na exata posição da célula onde a função foi chamada.
    If oImage Is Nothing Then
        sFile = "C:teste\" & sCode & ".jpg"
        Set oImage = oSheet.Shapes.AddPicture(sFile, msoCTrue, msoCTrue, oCell.Left, oCell.Top, oCell.Width, oCell.Height)

        If oImage Is Nothing Then ' Verifica se falhou o carregamento da imagem. Se falhou, adiciona a imagem genérica (com nome fixo)
            Set oImage = oSheet.Shapes.AddPicture("C:teste\inexistente.jpg", msoCTrue, msoCTrue, oCell.Left, oCell.Top, oCell.Width, oCell.Height)
        End If

        oImage.Name = sCode

    ' Caso contrário, se a imagem já existir, garante que ela se posiciona e cabe exatamente dentro da célula
    ' (apenas para o caso do usuário ter movido ou redimensionado manualmente a imagem sem querer)
    Else
        With oImage
            .Left = oCell.Left
            .Top = oCell.Top
            .Width = oCell.Width
            .Height = oCell.Height
        End With
    End If

End Sub

VINCULAR IMAGEM A CELULA E BUSCAR COM FUNÇÃO

Enviado: 17 Set 2019 às 14:18
por rit
Como faz pra funcionar?

Pra mim ele ta retornando "getImage(10)" o texto escrto na celula nao a imagem.

VINCULAR IMAGEM A CELULA E BUSCAR COM FUNÇÃO

Enviado: 17 Set 2019 às 15:10
por eduardogrigull
Eu usei:
Código: Selecionar todos
Sub CallGetImage()
Call getImage("img")
End Sub
No caso, "img" é o nome da imagem, e ele realiza esse procedimento para a célula atual selecionada...

Re: VINCULAR IMAGEM A CELULA E BUSCAR COM FUNÇÃO

Enviado: 17 Set 2019 às 15:34
por rit
vamos supor que eu tenha umas 20 imagens como isso funcionaria? eu teria que dar call 20 vezes?

VINCULAR IMAGEM A CELULA E BUSCAR COM FUNÇÃO

Enviado: 17 Set 2019 às 16:54
por eduardogrigull
Sim, do mesmo modo que seria com uma função... Mas sempre tem como aprimorar, aí você poderia mandar uma planilha teste, ou explicar como é feito a interação

Re: VINCULAR IMAGEM A CELULA E BUSCAR COM FUNÇÃO

Enviado: 17 Set 2019 às 17:25
por rit
Cara deu boa, agora preciso saber o seguinte voce sabe como eu faço para ele dimensionar com celula mesclada? tipo quando eu inserir a imagem ele ficar do tamanho das celulas mescladas?

VINCULAR IMAGEM A CELULA E BUSCAR COM FUNÇÃO

Enviado: 17 Set 2019 às 18:09
por eduardogrigull
Tente toda vez que usar:

oCell.Left
oCell.Top
oCell.Width
oCell.Heigh


Substituir por:

oCell.MergeArea.Left
oCell.MergeArea.Top
oCell.MergeArea.Width
oCell.MergeArea.Heigh

VINCULAR IMAGEM A CELULA E BUSCAR COM FUNÇÃO

Enviado: 18 Set 2019 às 08:06
por rit
não funcionou não, ele fica do tamanho de uma celula normal.

VINCULAR IMAGEM A CELULA E BUSCAR COM FUNÇÃO

Enviado: 18 Set 2019 às 09:52
por rit
Alguem manja como redimensionar com a celula mesclada? a imagem