2016-06-22 2 views
0

Ich habe einen Code zum Öffnen von Hyperlinks von einem Excel-Blatt in Chrom. Es funktioniert gut, aber ich habe ein seltsames Verhalten bemerkt, es öffnet die Hyperlinks nicht von oben nach unten, aber mit einigen Kriterien verstehe ich nicht, es ist nicht zufällig, weil beim Testen bemerkte ich, dass es immer die Links in der gleichen Reihenfolge geöffnet dhSo öffnen Sie Hyperlinks in Excel in der Reihenfolge mit Chrom

Hyperlink 1 Hyperlink 2 Hyperlink 3 Hyperlink 4 Hyperlink 5

Es würde immer offen

Hyperlink 2 Hyperlink 1 Hyperlink Hyperlink 3 4 5 Hyperlink

Jedes Mal, wenn ich den Code ausführte, öffnete er sie in dieser Reihenfolge. Ich brauche sie, um die Hyperlinks von oben nach unten zu öffnen. Hier ist der Code

Sub Open_HyperLinks() 
    Dim chromePath As String, hl As Hyperlink 

    chromePath = Environ("PROGRAMFILES(X86)") & "\Google\Chrome\Application\chrome.exe" 
If Selection.Count > 1 Then 
    Selection.SpecialCells(xlCellTypeVisible).Select 
End If 
    'On Error Resume Next 
    For Each hl In Selection.Hyperlinks 
     Shell chromePath & " -url " & hl.Address 
     Next hl 
End Sub 
+0

Wo/wie werden die URLs gespeichert? In einer einzigen Zelle? Ich eine Zeile oder eine Spalte? Ist Chrome geschlossen, wenn Sie Ihren Code ausführen? –

+0

Jeder Hyperlink ist in einer einzigen Zelle gespeichert, zum Beispiel Hyperlink 1 ist in Zelle A1 Hyperlink 2 Zelle A2 und so weiter ... chrome ist offen –

Antwort

0

Don't use .Select, da es Probleme verursachen kann.

Funktioniert das für Sie?

Sub Open_HyperLinks() 
Dim chromePath As String, hl As Hyperlink 
Dim rng As Range, visRng As Range 

chromePath = Environ("PROGRAMFILES(X86)") & "\Google\Chrome\Application\chrome.exe" 

Set rng = Selection 

If rng.Count > 1 Then 
    Set visRng = rng.SpecialCells(xlCellTypeVisible) 
End If 
'On Error Resume Next 
For Each hl In visRng.Hyperlinks 

    Shell chromePath & " -url " & hl.Address 
Next hl 
End Sub 
+0

Nee noch nicht öffnen sie in Reihenfolge Ich frage mich, ob was ich versuche zu tun ist Möglich habe ich 'Application.Wait Now() + TimeValue (" 00:00:01 ")' aber immer noch das gleiche Verhalten ausprobiert –

Verwandte Themen