Notifications
Clear all

Editar múltiplas hiperligações simultaneamente

10 Posts
4 Usuários
0 Reactions
1,158 Visualizações
(@macsof)
Posts: 0
New Member
Topic starter
 

Bom dia, pessoal,

Tenho um ficheiro com 365 hiperligações. Precisava de alterar a extensão delas. Precisava de passar todas de ...xlsx para ...xlsm.
Alguém sabe uma forma de fazer sem ser um a um?

Obrigado

 
Postado : 17/12/2015 4:53 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Normalmente o localizar /substituir do excel dá conta do recado

 
Postado : 17/12/2015 8:48 am
(@macsof)
Posts: 0
New Member
Topic starter
 

Olá, penso que não. faz em fórmulas, mas não em hiperligações.

 
Postado : 17/12/2015 1:11 pm
(@mprudencio)
Posts: 0
New Member
 

Posta um arquivo modelo

 
Postado : 17/12/2015 5:25 pm
(@macsof)
Posts: 0
New Member
Topic starter
 

Obrigado, aqui. É um simples calendário

 
Postado : 18/12/2015 4:09 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Experimente

Sub AlteraHyp()
Dim hL As Hyperlink, mhL As Hyperlinks
Set mhL = ActiveSheet.Hyperlinks
For Each hL In mhL
    hL.Address = VBA.Left(hL.Address, Len(hL.Address) - 1) & "m"
Next
End Sub
 
Postado : 18/12/2015 5:16 am
(@macsof)
Posts: 0
New Member
Topic starter
 

Dá este erro

 
Postado : 18/12/2015 12:00 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Testei no modelo que postou, e rodou Ok; porem a planilha deve estar desprotegida

 
Postado : 18/12/2015 1:42 pm
(@edsonbr)
Posts: 0
New Member
 

Testei aqui, o erro ocorreu também. Entretanto, o código do Reinaldo está Ok para substituir o hiperlink de todas as células. O único problema que ocorre é quando o código tenta alterar o hiperlink daquele único botão "Voltar ao menu principal", que na verdade não é um botão mas um Shape (Rectangle 1). Aí a propriedade Address deixa de estar disponível como de leitura e gravação e passa a ser somente leitura (mesmo tentando alterar através do shape, usando hL.Shape.Hyperlink.Address = ... Talvez mais alguém queira contribuir com o tópico e resolver isso).

Sugiro então alterar manualmente o hiperlink daquele "botão" e usar o código do Reinaldo somente acrescentando a estrutura condicional:

Sub AlteraHyp()
  Dim hL As Hyperlink, mhL As Hyperlinks
  Set mhL = ActiveSheet.Hyperlinks
  For Each hL In mhL
     If hL.Type = msoHyperlinkRange Then
       hL.Address = VBA.Left(hL.Address, Len(hL.Address) - 1) & "m"
     End If
  Next
End Sub

Saudações e boas festas a todos!

 
Postado : 18/12/2015 2:10 pm
(@macsof)
Posts: 0
New Member
Topic starter
 

Pessoal, obrigado, resolveu.

 
Postado : 19/12/2015 4:10 am