Ir ao conteúdo

Excel Mudar Endereço URL a Partir de Outra Célula


Ir à solução Resolvido por Basole,

Posts recomendados

Postado

Olá galera, tudo bem?

 

Eu tenho uma planilha com informações de livros (título, autor, etc). Nessa planilha também tem um link externo que tem a imagem desses livros. No entanto, o nome da imagem a que esse link se refere, está com caracteres especiais (underline, etc). 

 

Eu gostaria de saber se haveria a possibilidade de criar um macro no qual o Excel renomeasse apenas o link dessas imagens a partir do título do livro (que está em outra coluna), mas antes disso a imagem teria que ser baixada porque senão o link não vai funcionar.

 

Seria basicamente puxar o título do livro de alguma célula e colar no link, para em vez da imagem ter o nome de "2323_s23232.jpg ter "título-livro.jpg".

 

PS: segue link da minha planilha em anexo.

 

Deu pra entender?

 

Desde de já, obrigado.

Tabela_de_Produtos.xls

Postado
8 horas atrás, Basole disse:

Veja se e isso que deseja

A macro substitui a url por hyperlink com o titulo do respectivo livro, mantendo o endereço da imagem.

 

 

 

 

 

Tabela_de_Produtos.xls 56 kB · 2 downloads

Muito obrigado @Basole, mas ainda não é o que estou procurando. 

 

Na verdade eu gostaria que o sistema fizesse o download a partir da URL, e após o download renomeasse o nome da imagem de acordo com o título do livro, ou simplesmente removesse aqueles underlines

 

 

 

 

Postado

@Gonzallez Atualizei a macro de acordo com sua solicitacao

 

* 1-  Cria uma nova pasta para armazenar as imagens que serao "baixadas", chamada FOTOS (caso nao exista), localizada na mesma pasta da planilha.

   2 - Renomea a imagem de acordo com a coluna B

  3 - Insere um hyperlink na coluna N armazenando o endereco (caminho), de cada imagem "baixada".

 

Sub DownloadImagensRenameTitle()
Dim sURI  As Range
Dim Lr!

  Lr = Range("N" & Rows.Count).End(xlUp).Row

 Set oXMLHTTP = VBA.CreateObject("MSXML2.XMLHTTP.6.0")
 Set oBinaryStream = VBA.CreateObject("ADODB.Stream")
 adTypeBinary = 1
 oBinaryStream.Type = adTypeBinary

   FolderName = ThisWorkbook.Path & "\FOTOS"

        If VBA.Len(VBA.Dir(FolderName, VBA.vbDirectory)) = 0 Then
             VBA.MkDir FolderName 'cria NOVA pasta, caso nao exista
        End If
        
        
 For i = 2 To Lr
  sPath = FolderName & "\" & Range("B" & i).Value2 & ".jpg"
Set sURI = Range("N" & i)

  On Error GoTo HTTPError
  oXMLHTTP.Open "GET", sURI.Value2, False
  oXMLHTTP.Send
  aBytes = oXMLHTTP.responsebody
  On Error GoTo 0

  oBinaryStream.Open
  oBinaryStream.Write aBytes
  adSaveCreateOverWrite = 2
  oBinaryStream.SaveToFile sPath, adSaveCreateOverWrite
  oBinaryStream.Close
  
 ActiveSheet.Hyperlinks.Add Anchor:=sURI, _
                        Address:=FolderName & "\" & Range("B" & i).Value2 & ".jpg", _
                        SubAddress:="", _
                        ScreenTip:=Range("B" & i).Value2, _
                        TextToDisplay:=Range("B" & i).Value2
NextRow:
 Next

 Exit Sub

HTTPError:
 Resume NextRow

End Sub

Veja se e isso!

 

  • Curtir 1
  • Obrigado 1
Postado
1 hora atrás, Basole disse:

@Gonzallez Atualizei a macro de acordo com sua solicitacao

 

* 1-  Cria uma nova pasta para armazenar as imagens que serao "baixadas", chamada FOTOS (caso nao exista), localizada na mesma pasta da planilha.

   2 - Renomea a imagem de acordo com a coluna B

  3 - Insere um hyperlink na coluna N armazenando o endereco (caminho), de cada imagem "baixada".

 


Sub DownloadImagensRenameTitle()
Dim sURI  As Range
Dim Lr!

  Lr = Range("N" & Rows.Count).End(xlUp).Row

 Set oXMLHTTP = VBA.CreateObject("MSXML2.XMLHTTP.6.0")
 Set oBinaryStream = VBA.CreateObject("ADODB.Stream")
 adTypeBinary = 1
 oBinaryStream.Type = adTypeBinary

   FolderName = ThisWorkbook.Path & "\FOTOS"

        If VBA.Len(VBA.Dir(FolderName, VBA.vbDirectory)) = 0 Then
             VBA.MkDir FolderName 'cria NOVA pasta, caso nao exista
        End If
        
        
 For i = 2 To Lr
  sPath = FolderName & "\" & Range("B" & i).Value2 & ".jpg"
Set sURI = Range("N" & i)

  On Error GoTo HTTPError
  oXMLHTTP.Open "GET", sURI.Value2, False
  oXMLHTTP.Send
  aBytes = oXMLHTTP.responsebody
  On Error GoTo 0

  oBinaryStream.Open
  oBinaryStream.Write aBytes
  adSaveCreateOverWrite = 2
  oBinaryStream.SaveToFile sPath, adSaveCreateOverWrite
  oBinaryStream.Close
  
 ActiveSheet.Hyperlinks.Add Anchor:=sURI, _
                        Address:=FolderName & "\" & Range("B" & i).Value2 & ".jpg", _
                        SubAddress:="", _
                        ScreenTip:=Range("B" & i).Value2, _
                        TextToDisplay:=Range("B" & i).Value2
NextRow:
 Next

 Exit Sub

HTTPError:
 Resume NextRow

End Sub

Veja se e isso!

 

@Basole, onde insiro esse código?

  • Membro VIP
Postado

@Gonzallez

 

Para responder use a Janela Responder que fica logo abaixo da última resposta, não use o botão Citar sem necessidade, pois polui o fórum dificultando a leitura das respostas( só clicar dentro dela e digitar).

Só use o botão Citar quando realmente for necessário.

 

[]s

  • Curtir 2
  • Solução
Postado

@Gonzallez  siga o passo-a-passo:

 

Inserir código VBA na pasta de trabalho do Excel

Abra sua pasta de trabalho no Excel.
Pressione Alt + F11 para abrir o Visual Basic Editor (VBE).

image.png.49b72ad083ad090e25a7307e78c134db.png

 

Clique com o botão direito do mouse no nome da pasta de trabalho no painel "Project-VBAProject" (no canto superior esquerdo da janela do editor) e selecione Inserir -> Módulo no menu de contexto.

image.png.a16f59e15b2faf0c28bea71da5e08e81.png

 

Copie o código do VBA (Que inseri no meu poste anterior.) e cole-o no painel direito do editor do VBA (janela "Módulo1").

image.png.aa8215fa019b36da9cfac56018a2a417.png

 

Salve sua pasta de trabalho.

Feche a janela e Aperte as teclas ALT+F8 e clique em executar

image.png.00acd99017e7f58de1c365afe53e0d96.png

 

  • Curtir 2

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!