- 17 Set 2019 às 10:35
#48252
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!
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