Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1084to1088
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

Per VBA : Erreichbarkeit von Hyperlinks überprüfen

Per VBA : Erreichbarkeit von Hyperlinks überprüfen
Hyperlinks
Hallo Leute,
ich habe eine Excel-Tabelle mit zahlreichen Hyperlinks ins WWW (diverse unterschiedliche URLs), z.B. :
http://www.irgend-eine-seite.com/forum/Beitrag4711.php
http://was-soll.das/?
http://www.meinebank.ru/konto/nepper/schlepper/Bauernfaenger.asp
http://www.abcxyz.de
etc.
Nun möchte ich per VBA überprüfen, welche URLs noch erreichbar sind und welche "tot" sind.
Leider fehlt mir der passende Ansatz dazu :-( - könnte mir jemand einen Tip geben ?
Was ich NICHT möchte : Hyperlink mit IE aufrufen und dann den Status des IE abfragen !
Der Code sollte browserunabhängig funktionieren (evtl. per API ?) und z.B. als FUNCTION einen Returncode zurückgeben.
Zusätzliches Problem : Wenn ich z.B. http://www.irgend-eine-seite.com/forum/Beitrag4711.php abfrage, diese Seite jedoch nicht mehr erreichbar ist und der Server dann automatisch auf http://www.irgend-eine-seite.com/default404.html umleitet, wird zwar eine Seite angezeigt, aber nicht die zu überprüfende Seite - dieser Link sollte dann auch als "tot" gemeldet werden.
Ich bin über jede konstruktive Hilfe dankbar,
Gruß NoNet
AW: Per VBA : Erreichbarkeit von Hyperlinks überprüfen
25.06.2009 12:50:10
Hyperlinks
setzte einen ping ab
Bitte nicht so "ausführlich" antworten ! _oT
25.06.2009 12:53:43
NoNet
_oT = "ohne Text"
AW: Per VBA : Erreichbarkeit von Hyperlinks überprüfen
25.06.2009 13:10:01
Hyperlinks
Hallo,
wühl dich hier mal durch. Ziemlich weit unten gibt es eine Funktion Ping()
Gruß
Rudi
AW: Per VBA : Erreichbarkeit von Hyperlinks überprüfen
25.06.2009 17:12:11
Hyperlinks
Hallo NoNet,
probier's hiermit:

Function URLExist(chkUrl As String) As Boolean    
  On Error Resume Next    
  Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")  
  objXMLHTTP.Open "GET", chkUrl, False  
  objXMLHTTP.send
  If objXMLHTTP.Status = 200 Then  
    URLExist = True
  Else
    URLExist = False
  End If  
  Set objXMLHTTP = Nothing  
End Function  

mfg Anton
Anzeige
AW: Per VBA : Erreichbarkeit von Hyperlinks überprüfen
30.06.2009 08:22:02
Hyperlinks
Hallo,
habe zufällig diesen Beitrag gelesen, hier noch eine Version.
Private Type WSAdata
   wVersion As Integer
   wHighVersion As Integer
   szDescription(0 To 255) As Byte
   szSystemStatus(0 To 128) As Byte
   iMaxSockets As Integer
   iMaxUdpDg As Integer
   lpVendorInfo As Long
End Type

Private Type Hostent
   h_name As Long
   h_aliases As Long
   h_addrtype As Integer
   h_length As Integer
   h_addr_list As Long
End Type

Private Type IP_OPTION_INFORMATION
   TTL As Byte
   Tos As Byte
   Flags As Byte
   OptionsSize As Long
   OptionsData As String * 128
End Type

Private Type IP_ECHO_REPLY
   Address(0 To 3) As Byte
   Status As Long
   RoundTripTime As Long
   DataSize As Integer
   Reserved As Integer
   data As Long
   Options As IP_OPTION_INFORMATION
End Type

Private Declare Function GetHostByName Lib "wsock32.dll" Alias "gethostbyname" (ByVal Hostname As String) As Long
Private Declare Function WSAStartup Lib "wsock32.dll" (ByVal wVersionRequired&, lpWSAdata As WSAdata) As Long
Private Declare Function WSACleanup Lib "wsock32.dll" () As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
Private Declare Function IcmpCreateFile Lib "icmp.dll" () As Long
Private Declare Function IcmpCloseHandle Lib "icmp.dll" (ByVal HANDLE As Long) As Boolean
Private Declare Function IcmpSendEcho Lib "ICMP" (ByVal IcmpHandle As Long, ByVal DestAddress As Long, ByVal RequestData As String, ByVal RequestSize As Integer, RequestOptns As IP_OPTION_INFORMATION, ReplyBuffer As IP_ECHO_REPLY, ByVal ReplySize As Long, ByVal TimeOut As Long) As Boolean

Private Const SOCKET_ERROR = 0


Public Function Ping(ByVal Server As String) As Long
   Dim hFile As Long, lpWSAdata As WSAdata
   Dim hHostent As Hostent, AddrList As Long
   Dim Address As Long, rIP As String
   Dim OptInfo As IP_OPTION_INFORMATION
   Dim EchoReply As IP_ECHO_REPLY
   Dim Hostname As String


   Ping = 0 'Rückgabe anfangs auf null setzen 
   If Left(Server, 7) = "http://" Then Server = Mid(Server, 8) 'http:// entfernen 
   If Right(Server, 1) = "/" Then Server = Left(Server, Len(Server) - 1)

   Call WSAStartup(&H101, lpWSAdata)

   If GetHostByName(Server + String(64 - Len(Server), 0)) <> SOCKET_ERROR Then
      CopyMemory hHostent.h_name, ByVal GetHostByName(Server + String(64 - Len(Server), 0)), Len(hHostent)
      CopyMemory AddrList, ByVal hHostent.h_addr_list, 4
      CopyMemory Address, ByVal AddrList, 4
   End If

   hFile = IcmpCreateFile()
   If hFile = 0 Then Exit Function 'Bei Fehler abbrechen 

   OptInfo.TTL = 255

   'Ping senden 
   If IcmpSendEcho(hFile, Address, String(32, "A"), 32, OptInfo, EchoReply, Len(EchoReply) + 8, 2000) Then
      rIP = CStr(EchoReply.Address(0)) + "." + CStr(EchoReply.Address(1)) + "." + CStr(EchoReply.Address(2)) + "." + CStr(EchoReply.Address(3))
   Else
      'Fehler aufgetreten 
      Exit Function
   End If

   If EchoReply.Status = 0 Then
      Ping = EchoReply.RoundTripTime
   End If
End Function



Sub Ping_Server()
Dim Reply As Long
Dim strURL As String

strURL = "www.herber.de"

Reply = Ping(strURL)

    If Reply > 0 Then
       MsgBox "Der Server " & strURL & " antwortete innerhalb von " & Reply & " Millisekunden."
    Else
       MsgBox "Der Server " & strURL & " antwortete nicht."
    End If


End Sub


Gruß Tino

Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige