Como abrir vários hiperlinks concatenados ao mesmo tempo?

0

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

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

Na verdade, escrevi a função assim:

=hyperlink(CONCATENATE(cell1,cell2))

E agora ele mostra todas as células como links. Em seguida, fui ao Visual Basic e adicionei o seguinte módulo (que me permite abrir vários links de uma só vez):

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 é com os links concatenados.

Alguma ideia do porquê? Soluções alternativas ao redor disso?

    
por Duraid 02.04.2015 / 14:18

1 resposta

1

Pelo que posso dizer, ele falha porque os hyperlinks criados com a função HYPERLINKS do Excel não são incluídos na coleção% Vde% VBA da célula. Tente usar HYPERLINKS e observe que ele não imprime os URLs das células criando um hiperlink com fórmula. Isso é feito novamente ao tentar editar o hiperlink no Excel. Clicar com o botão direito do mouse em uma célula com a função Debug.Print c.Hyperlinks(1).Address oferece apenas a opção "Remover Hiperlink" e clicar nela não faz nada. Um hiperlink comum permite editar, abrir ou remover.

Aqui está uma solução que primeiro tenta extrair o valor HYPERLINK e, se isso falhar, extrai o valor de texto das células. Observe que isso não funcionará se você usar o parâmetro HYPERLINK(1).ADDRESS na sua fórmula friendly_name , pois ele 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

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

    
por 02.04.2015 / 14:44