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.
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.
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>
Verwenden Sie den folgenden Code, um nach einer Internetverbindung zu suchen erste anable XML v6.0 in Ihren Referenzen
%Vor%Leider ist dies aus mehreren Gründen eine schwierige Frage:
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.
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 )
XMLHTTP60.ResponseText
out in eine Textdatei und rufe dann Documents.Open
für diese Textdatei %Vor%
Dies hat den Nachteil, dass einige verknüpfte Elemente verloren gehen und Sie beim Öffnen der Datei eine Meldung erhalten.
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
Tags und Links vba networking ms-office