Auf aktive Internetverbindung prüfen

7

Schrieb eine kleine App, die auf eine Reihe von Suchwebsites zugreift und die Ergebnisse in ein Word-Dokument schreibt, das einige hundert Mal am Tag ausgeführt wird.

Es speichert einzelne Suchergebnisse in einer Reihe von lokalen Ordnern. Wenn diese Wörter das nächste Mal durchsucht werden, werden sie lokal erfasst, anstatt die Website erneut zu laden.

Das funktioniert gut - auch wenn es nicht schnell geht. Die Leute sind beeindruckt, weil sie dies bis vor ein paar Wochen manuell getan haben, indem sie buchstäblich sechs verschiedene Suchwebseiten geladen, gesucht und dann die Ergebnisse in ein Word-Dokument kopiert und eingefügt haben.

Das Internet unseres Büros ist jedoch unzuverlässig und hat den letzten halben Tag verloren. Dies hat dazu geführt, dass ungefähr 400 fehlerhafte Suchen in den lokalen Ordnern gespeichert und in die endgültigen Dokumente eingefügt wurden.

Wenn eine Person suchte, konnten sie feststellen, ob das Internet kaputt war und sie später ihre Suche durchführen würden. Natürlich, diese App kann nicht sagen, und weil ich keine APIs oder irgendetwas verwende, und weil ich auf die VBA-Umgebung beschränkt bin (ich bin nicht einmal MZ-Tools erlaubt), muss ich einen Weg finden Überprüfen Sie, ob das Internet funktioniert, bevor Sie mit dem Programmablauf fortfahren, ohne sich auf zu viele Referenzen verlassen zu müssen, und vorzugsweise ohne Bildschirm auf die Phrase "404 Page Not Found" zu kopieren.

Ich bin nicht sehr vertraut mit VB, und VBA ruiniert mich auf so viele Arten, also gibt es wahrscheinlich einen einfachen Weg, dies zu tun, weshalb ich hier frage.

Schätzen Sie jede Hilfe.

    
user51498 15.02.2009, 21:17
quelle

5 Antworten

6

Sie könnten die MSXML-Bibliothek & amp; Verwenden Sie die XMLHttpRequest-Klasse, um nach Dingen zu suchen

z.B.

%Vor%

Der Status gibt Ihnen den HTTP-Statuscode für die Anfrage. Je nach Szenario müssen Sie möglicherweise weitere Überprüfungen durchführen.

Ich hoffe, das hilft.

    
shahkalpesh 15.02.2009, 21:39
quelle
21

Offensichtlich hat dein Problem viele Ebenen. Sie sollten zunächst "mit dem Internet verbunden" definieren und dann mit der Entwicklung von Ausweichstrategien fortfahren, bei denen keine ungültigen Dateien bei einem Fehler geschrieben werden.

Wie bei der Frage "bin ich verbunden" können Sie versuchen, auf die Win32-API zuzugreifen:

%Vor%

Obwohl Windows abhängig von Ihrer Netzwerkkonfiguration (Proxy / NAT / Firewall-Einschränkungen usw.) eine andere Meinung hat als Sie.

Wenn Sie versuchen, die Seiten zu erhalten, an denen Sie interessiert sind, können Sie auch den Rückkehrstatus in den HTTP-Headern überprüfen (Gateway-Timeout, 404, was auch immer Sie erwarten, wenn es nicht funktioniert) / p>     

Tomalak 15.02.2009 21:35
quelle
3

Verwenden Sie den folgenden Code, um nach einer Internetverbindung zu suchen erste anable XML v6.0 in Ihren Referenzen

%Vor%     
Daniel Isoje 26.12.2009 12:13
quelle
2

Leider ist dies aus mehreren Gründen eine schwierige Frage:

  1. Wie definieren Sie eine nicht funktionierende Internetverbindung? Suchen Sie nach einer gültigen IP-Adresse? Pingst du raus? Woher weißt du, dass du die Erlaubnis hast, diese Dinge zu überprüfen? Woher weißt du, dass die Firewall / Antiviren-Software des Computers kein wackeliges Verhalten verursacht?
  2. Sobald Sie festgestellt haben, dass die Verbindung funktioniert, was tun Sie, wenn die Verbindung mitten im Betrieb unterbrochen wird?

Es gibt wahrscheinlich Möglichkeiten, zu tun, was Sie tun wollen, aber viele "Teufel in den Details" Typ Dinge neigen dazu, Pop-up. Können Sie überprüfen, ob die gespeicherte Suche gültig ist? Wenn ja, wäre das wahrscheinlich der beste Weg, dies zu tun.

    
Jason Baker 15.02.2009 21:31
quelle
2

Aufbauend auf Shakalpeshs Antwort und den dazugehörigen Kommentaren gibt es (mindestens) zwei Möglichkeiten, die Webseite in Word zu bringen, ohne die vom XMLHTTP60-Objekt zurückgegebene XML zu analysieren.

(Hinweis: Der HTTP-Statuscode 200 gibt an, dass "die Anfrage erfolgreich war" - siehe hier )

  • schreibe XMLHTTP60.ResponseText out in eine Textdatei und rufe dann Documents.Open für diese Textdatei
  • auf
%Vor%

Dies hat den Nachteil, dass einige verknüpfte Elemente verloren gehen und Sie beim Öffnen der Datei eine Meldung erhalten.

  • Überprüfen Sie den URL-Status mit dem XMLHTTP60-Objekt und verwenden Sie dann Documents.Open , um die URL wie zuvor zu öffnen:
%Vor%

Es besteht eine geringe Chance, dass die XMLHTTP60-Anfrage erfolgreich ist und die Documents.Open one fehlschlägt (oder umgekehrt). Hoffentlich sollte dies ein ziemlich ungewöhnliches Ereignis sein, obwohl

    
barrowc 15.02.2009 23:32
quelle

Tags und Links