Como abrir vários hiperlinks concatenados ao mesmo tempo?

0

Eu usei a função Concatenar para ingressar em links como este:

Column 1: http://twitter.com/
Column 2: username
Column 3: http://twitter.com/username

Na verdade, eu escrevi a função assim:

=hyperlink(CONCATENATE(cell1,cell2))

E agora mostra todas as células como links. Em seguida, fui para o Visual Basic e adicionei o seguinte módulo (que permite abrir vários links ao mesmo tempo):

Sub Hyperlink_Follow()
For Each c In Selection
On Error Resume Next
c.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
Next
End Sub

Em seguida, selecionei os links e executei as macros, mas nada aconteceu.

Se você seguir as etapas acima e executar links como:

http://google.com
http://twitter.com
http://reddit.com

Funciona bem. O problema está nos links concatenados.

Alguma idéia do porquê? Soluções alternativas para isso?

Duraid
fonte

Respostas:

1

Pelo que sei, ele falha porque os hiperlinks criados com a HYPERLINKSfunção Excel não estão incluídos na HYPERLINKScoleção VBA da célula. Tente usar Debug.Print c.Hyperlinks(1).Addresse observe que ele não imprime os URLs das células, criando um hiperlink com fórmula. Além disso, é feito backup ao tentar editar o hiperlink no Excel. Clicar com o botão direito do mouse em uma célula com a HYPERLINKfunção fornece apenas a opção "Remover Hiperlink" e clicar nela não faz nada. Um hiperlink regular permite editar, abrir ou remover.

Aqui está uma solução alternativa que primeiro tenta extrair o HYPERLINK(1).ADDRESSvalor e, se isso falhar, extrai o valor do texto das células. Observe que isso não funcionará se você usar o friendly_nameparâmetro na sua HYPERLINKfórmula, pois será lido como o valor da célula.

Sub Hyperlink_Follow()
    Dim c As Range
    Dim url As String
    For Each c In Selection.Cells
        url = ""
        On Error Resume Next
        url = c.Hyperlinks(1).Address
        If url = "" Then url = c.Value
        ThisWorkbook.FollowHyperlink url
        Application.Wait Now() + TimeValue("00:00:03")
    Next
End Sub

Observe também que adicionei uma pausa de 3 segundos entre cada URL, porque descobri que abrir muitos de uma só vez tende a substituir a última janela criada em vez de criar uma nova. Isso pode ser apenas porque eu estou trabalhando no IE. Você pode testar isso e removê-lo, se não for necessário.

Engenheiro Toast
fonte
1
Não consigo encontrar nenhuma referência sobre o motivo disso, mas verifiquei que os hiperlinks criados pela fórmula usando =hyperlinknão estão incluídos na coleção de hiperlinks. por exemploFor Each Hyperlink In Worksheets(1).Hyperlinks MsgBox (Hyperlink.Address)Next
Raystafarian