Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1508to1512
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Verfügbarkeit von Web-Links mit VBA prüfen

Verfügbarkeit von Web-Links mit VBA prüfen
15.08.2016 21:16:38
Web-Links
Hallo Leute,
Ich habe in Excel eine Liste von Links zu Dokumenten auf einem firmeninternen Server. Diese Dokumente sind auf einem Share Point gespeichert werden aber auf diversen Seiten verlinkt. Durch neuere Versionen der Dokumente kann es passieren, dass ein Link nicht mehr richtig funktioniert, daher möchte ich gerne per VBA Abfrage meine URL-Liste überprüfen lassen und funktionsfähige Links in grün und kaputte Links rot einfärben.
Meine VBA-Kenntnisse sind stark eingerostet und habe mich durch das ganze Web gesucht und alles mögliche probiert.
Momentan ist der folgende Code in Verwendung. Jedoch funktioniert er nicht korrekt. Entweder werden alle Links als "ok" angezeigt, oder alle sind rot.
Auch nach verfälschen einiger zuvor "korrekter" Links zeigt mir das Makro die Links immer noch als okay an.
Jetzt gerade funktioniert es wieder nicht.
Zum Testen versuche ich "https://www.google.de" aber selbst der Link ist angeblich defekt.
Habt ihr einen neuen Vorschlag?
Sub Link_Pruefen()
Dim hypLink As Hyperlink
Dim varFehler As Variant
Dim AnzahlFalsch As Integer
Dim LetzteZeile As Integer
'Bestimmen der Letzten Zeile in Spalte B
LetzteZeile = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
ActiveSheet.Range(Cells(9, 2), Cells(LetzteZeile, 2)).Interior.ColorIndex = 0
For Each hypLink In ActiveSheet.Range(Cells(9, 2), Cells(LetzteZeile, 2)).Hyperlinks
If TypeName(hypLink.Parent) = "Range" Then
On Error Resume Next
varFehler = Dir(hypLink.Address)
If varFehler = "" Then
varFehler = Err.Number
Else
varFehler = Dir(hypLink.Address)
End If
On Error GoTo 0
If Not IsNumeric(varFehler) Then
hypLink.Parent.Interior.ColorIndex = 4
Else
hypLink.Parent.Interior.ColorIndex = 3
AnzahlFalsch = AnzahlFalsch + 1
End If
End If
Next
MsgBox AnzahlFalsch & " Verlinkungen sind fehlerhaft." & vbCrLf & vbCrLf & "Bitte beheben!",  _
vbExclamation, "Defekte Links entdeckt!"
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verfügbarkeit von Web-Links mit VBA prüfen
15.08.2016 21:22:58
Web-Links
Hallo,
vor kurzem habe ich einen Code geschrieben, der die Existenz von Webseiten prüft. Vielleicht ist es für dein thema übertragbar.

Sub Webseite_pruefen()
Dim Hy As Hyperlink
anfang = Timer
With CreateObject("MSXML2.XMLHTTP")
For Each Hy In ActiveSheet.Hyperlinks
If IsEmpty(Range(Hy.Range.Address).Offset(0, 1)) Then
i = i + 1
If i > 20 Then Exit For
Application.Goto Range(Hy.Range.Address)
On Error Resume Next
'Debug.Print Hy.Address, Hy.Range.Address
.Open "get", Hy.Address, False
.send
If Err.Number  0 Then
Range(Hy.Range.Address).Offset(0, 1) = Err.Number & ", " & Err.Description
Else
Range(Hy.Range.Address).Offset(0, 1) = "OK"
End If
On Error GoTo 0
End If
Next Hy
End With
Cells(1, 5) = Timer - anfang
End Sub
mfg
Anzeige
AW: Verfügbarkeit von Web-Links mit VBA prüfen
15.08.2016 21:30:49
Web-Links
Funktioniert das dann auch mit Dokumenten? PDF, Docx etc. und nicht reinen Webseiten?
AW: Verfügbarkeit von Web-Links mit VBA prüfen
16.08.2016 10:16:16
Web-Links
Habe den Code heute mal eingebaut und für mein Problem etwas angepasst, sodass die Links je nach Zustand farbig hinterlegt werden.
Allerdings wenn ich das ganze auf Richtigkeit teste und einige Links verfälsche, so dass sie niemals funktionieren könnten, zeigt er die Links dennoch als funktionsfähig an.
Irgendwelche Vorschläge? Vielen Dank schon im voraus.
 Sub Webseite_pruefen()
Dim Hy As Hyperlink
Dim LetzteZeile As Integer
'Bestimmen der Letzten Zeile in Spalte B
LetzteZeile = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
anfang = Timer
With CreateObject("MSXML2.XMLHTTP")
For Each Hy In ActiveSheet.Range(Cells(9, 2), Cells(LetzteZeile, 2)).Hyperlinks
Application.Goto Range(Hy.Range.Address)
On Error Resume Next
'Debug.Print Hy.Address, Hy.Range.Address
.Open "get", Hy.Address, False
.send
If Err.Number  0 Then
Range(Hy.Range.Address).Interior.ColorIndex = 3
Else
Range(Hy.Range.Address).Interior.ColorIndex = 4
End If
On Error GoTo 0
Next Hy
End With
Cells(1, 5) = Timer - anfang
End Sub

Anzeige

20 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige