Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
#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!
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
#48255
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-)
#48259
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.
#48269
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.
#48272
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
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord