Ist es möglich, mit HTTPS auf Webseiten zuzugreifen, für die eine Anmeldung / ein Kennwort in Excel erforderlich ist? Ja und nein Hier ist der Deal und warum es nicht so einfach ist.
HTTPS ist vereinbarungs die Kennung für das, was als SSL (Secure Sockets Layer) bezeichnet wird. Das hat eigentlich nichts mit Passwörtern oder Logins als solchen zu tun. SSL baut eine verschlüsselte Verbindung zwischen einem Webclient und einem Server auf, sodass keine Informationen zwischen den beiden "im Klartext" gesendet werden - bei unverschlüsselten Übertragungen. Wenn die Informationen Anmelde- und Kennwortinformationen enthalten, werden sie durch die Verschlüsselung der Übertragung vor neugierigen Blicken geschützt. Die Verschlüsselung von Kennwörtern ist jedoch nicht erforderlich. Ich habe den Ausdruck "per Konvention" verwendet, weil die eigentliche Sicherheitstechnologie SSL ist. HTTPS signalisiert dem Server nur, dass der Client die Verwendung dieses Protokolls plant. SSL kann auf verschiedene andere Arten verwendet werden.
Also ... wenn Ihr Computer eine URL an einen Server sendet, der SSL verwendet und diese URL mit HTTPS beginnt, sagt Ihr Computer dem Server:
"Hey, Mr. Server, lass uns die Hand über diese Verschlüsselungssache geben, damit von nun an nichts mehr von einem Bösen abgefangen wird. Und wenn das erledigt ist, schick mir die Seite, die über die URL adressiert ist."
Der Server sendet die Schlüsselinformationen zum Einrichten einer SSL-Verbindung zurück. Es liegt an Ihrem Computer, tatsächlich etwas damit zu tun.
Das ist der Schlüssel zum Verständnis der Rolle von VBA in Excel. Die Programmierung in VBA müsste tatsächlich den nächsten Schritt unternehmen und das SSL auf der Clientseite implementieren.
"Echte" Webbrowser machen das automatisch und zeigen Ihnen ein kleines Schlosssymbol in der Statuszeile an, um Ihnen zu zeigen, dass es getan wurde. Wenn die VBA die Webseite jedoch nur als Datei öffnet und die darin enthaltenen Informationen in Zellen in einer Tabelle einliest (ein sehr verbreitetes Beispiel), wird Excel dies nicht ohne zusätzliche Programmierung tun. Das freundliche Angebot des Servers, Hände zu schütteln und eine sichere SSL-Kommunikation einzurichten, wird von Excel einfach ignoriert.
Um dies zu beweisen, verwenden wir die vom Google Mail-Dienst verwendete SSL-Verbindung (die mit "https" beginnt) und codieren einen Anruf, um diese Verbindung so zu öffnen, als wäre es eine Datei.
Dadurch wird die Webseite wie eine einfache Datei gelesen. Da neuere Versionen von Excel HTML automatisch importieren, wird die Google Mail-Seite (ohne die dynamischen HTML-Objekte) nach Ausführung der Open-Anweisung in eine Tabelle importiert. Das Ziel von SSL-Verbindungen besteht darin, Informationen auszutauschen und nicht nur eine Webseite zu lesen. Dies wird Sie normalerweise nicht sehr weit bringen.
Um mehr zu tun, müssen Sie in Ihrem Excel VBA-Programm eine Möglichkeit haben, sowohl das SSL-Protokoll als auch möglicherweise auch DHTML zu unterstützen. Es ist wahrscheinlich besser, mit Visual Basic als mit Excel VBA zu beginnen. Verwenden Sie dann Steuerelemente wie die Internet Transfer API WinInet und rufen Sie Excel-Objekte nach Bedarf auf. Es ist jedoch möglich, WinInet direkt aus einem Excel VBA-Programm zu verwenden.
WinInet ist eine API - Application Programming Interface - für WinInet.dll. Es wird hauptsächlich als eine der Hauptkomponenten von Internet Explorer verwendet, aber Sie können es auch direkt in Ihrem Code und für HTTPS verwenden. Das Schreiben des Codes zur Verwendung von WinInet ist mindestens eine mittelschwere Aufgabe. Im Allgemeinen handelt es sich um folgende Schritte:
Es gibt zwei Hauptunterschiede beim Schreiben des WinInet-Codes für die Verwendung von https anstelle des normalen HTTP:
Beachten Sie außerdem, dass die Funktion zum Austauschen eines Anmeldenamens / Kennworts logisch unabhängig von der Verschlüsselung der Sitzung mit https und SSL ist. Sie können das eine oder das andere oder beides tun. In vielen Fällen gehören sie zusammen, aber nicht immer. Das Implementieren der WinInet-Anforderungen führt zu keiner automatischen Antwort auf eine Anmelde- / Kennwortanforderung. Wenn Anmelde- und Kennwort beispielsweise Teil eines Webformulars sind, müssen Sie möglicherweise die Namen der Felder ermitteln und die Felder in Excel VBA aktualisieren, bevor Sie die Anmeldezeichenfolge auf dem Server "veröffentlichen". Das richtige Reagieren auf die Sicherheit eines Webservers ist ein großer Teil dessen, was ein Webbrowser tut. Wenn andererseits eine SSL-Authentifizierung erforderlich ist, können Sie das InternetExplorer-Objekt verwenden, um sich in VBA anzumelden.
Das Fazit ist, dass die Verwendung von https und die Anmeldung bei einem Server aus einem Excel VBA-Programm möglich ist, Sie aber nicht erwarten, den Code zu schreiben, der dies in wenigen Minuten erledigt.