Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zugriff auf Webseite mit VBA Makro Login

Zugriff auf Webseite mit VBA Makro Login
03.10.2016 12:25:09
Bernd
Hallo zusammen,
ich hoffe,jemand kann mir weiterhelfen bezüglich Zugriff auf Webseiten mittels Excel Makro. Leider bin ich in der Recherche zu dem Thema nicht schlauer geworden, da ich die Codes nicht verstehe.
Am Beispiel der Übermittlung des Login-Namens an eine Webseite würde ich gerne den Quesscode des VBA-Macros verstehen - insofern wäre es gut, nicht nur den VBA-Code sondern auch ein paar Erläuterungen dazu zu erhalten (ich weiß, viele Wünsche von meiner Seite...:-).
Als TXT Datei lade ich den aus meiner Sicht relevanten Teil des HTML-Codes der Webseite hoch. Dieser wird mit angezeigt und markiert in Microsoft Edge, wenn ich das Element "untersuche".
So, ich hoffe inständig, dass mir jemand hilft, damit ich mich in das Thema einarbeiten kann.
Besten Dank vorab an diejenigen, die sich die Mühe machen, und mir versuchen zu helfen...
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zugriff auf Webseite mit VBA Makro Login
03.10.2016 12:31:10
Bernd
Hier der Link:
https://www.herber.de/bbs/user/108562.txt
Achtung, beim Öffnen der Datei muss man in den Text klicken und dann mit der Maus nach rechts fahren, um den gesamten Code zu sehen!!
Anzeige
AW: Zugriff auf Webseite mit VBA Makro Login
03.10.2016 18:21:28
Bernd
Die Frage ist noch offen, ich habe aus Versehen das Kontrollkästchen nicht aktiviert als ich meine Textdatei hochgeladen habe.
AW: Zugriff auf Webseite mit VBA Makro Login
06.10.2016 14:46:16
Anton
Hallo Bernd,
probier's hiermit:
Code:

Sub log_in()
  Dim IEApp As Object, oLogin As Object  
 'IE starten
  Set IEApp = CreateObject("InternetExplorer.Application")  
 'IE sichtbar
  IEApp.Visible = True
 'zur Adresse navigieren
  IEApp.Navigate "C:\Temp\test.htm" 'URL-Adresse anpassen
 'warten bis IE geladen wird
  Do: DoEvents: Loop Until IEApp.Busy = False    
  Do: DoEvents: Loop Until IEApp.Busy = False    
 'warten bis die Seite geladen wird
  Do: DoEvents: Loop Until IEApp.Document.ReadyState = "complete"    
 'Verweis auf das Eingabefeld über dessen ID setzen
 '(siehe Quellcode der Seite)
  Set oLogin = IEApp.Document.getelementbyid("login")  
 'wenn das Eingabefeld gefunden wurde, dann
  If Not oLogin Is Nothing Then    
   'befüllen
    oLogin.Value = "Bernd" 'anpassen
 'sonst
  Else
   'Meldung
    MsgBox "PANIK!"
  End If  
  Set IEApp = Nothing  
End Sub  


mfg Anton
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zugriff auf Webseiten mit VBA Makro


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Modul einfügen: Klicke mit der rechten Maustaste auf "VBAProject (deine Datei)" und wähle Einfügen > Modul.

  3. Code eingeben: Füge den folgenden Code in das Modul ein:

    Sub log_in()
       Dim IEApp As Object, oLogin As Object
    
       ' IE starten
       Set IEApp = CreateObject("InternetExplorer.Application")
    
       ' IE sichtbar
       IEApp.Visible = True
    
       ' zur Adresse navigieren
       IEApp.Navigate "https://deine-webseite.com" ' URL-Adresse anpassen
    
       ' warten bis IE geladen wird
       Do: DoEvents: Loop Until IEApp.Busy = False
       Do: DoEvents: Loop Until IEApp.ReadyState = 4
    
       ' Verweis auf das Eingabefeld über dessen ID setzen
       Set oLogin = IEApp.Document.getElementById("login") ' ID anpassen
    
       ' wenn das Eingabefeld gefunden wurde
       If Not oLogin Is Nothing Then
           ' befüllen
           oLogin.Value = "deinBenutzername" ' Benutzernamen anpassen
       Else
           ' Meldung
           MsgBox "Login-Feld nicht gefunden!"
       End If
    
       ' IE schließen, falls gewünscht
       ' IEApp.Quit
       Set IEApp = Nothing
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und führe das Makro über ALT + F8 aus, wähle log_in und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Fehler: "Login-Feld nicht gefunden!"
    Lösung: Überprüfe die ID des Eingabefeldes. Du kannst den Quellcode der Webseite untersuchen, um sicherzustellen, dass die richtige ID verwendet wird.

  • Fehler: Internet Explorer öffnet sich nicht
    Lösung: Stelle sicher, dass Internet Explorer auf deinem Computer installiert und aktiviert ist. Beachte, dass dieser Code nicht mit Microsoft Edge funktioniert.


Alternative Methoden

  • Mit VBA eine Webseite in Edge öffnen: Wenn du Microsoft Edge verwenden möchtest, kannst du das CreateObject-Kommando anpassen:

    Set ie = CreateObject("Microsoft.Edge.Application")

    Beachte, dass du möglicherweise eine spezielle Bibliothek oder ein Add-In benötigst, um mit Edge zu arbeiten, da der Standard-IE-Objekt nicht direkt funktioniert.


Praktische Beispiele

  • Login zu einem Online-Portal: Verwende den obigen Code, um dich bei einem Online-Portal anzumelden, indem du die URL und die ID des Login-Feldes anpasst.

  • Daten von einer Webseite extrahieren: Du kannst den gleichen Ansatz verwenden, um Daten von einer Webseite zu extrahieren, indem du die entsprechenden DOM-Elemente identifizierst.


Tipps für Profis

  • Fehlerbehandlung hinzufügen: Implementiere Fehlerbehandlungen, um sicherzustellen, dass dein Makro bei unerwarteten Situationen nicht abstürzt. Verwende On Error GoTo-Anweisungen.

  • Regelmäßige Updates der Webseite berücksichtigen: Webseiten ändern sich häufig. Überprüfe regelmäßig, ob die IDs und URLs in deinem VBA-Code aktuell sind.

  • Verzögerungen einbauen: Manchmal kann es nützlich sein, kleine Verzögerungen (Application.Wait) einzubauen, um sicherzustellen, dass die Webseite vollständig geladen ist, bevor du auf Elemente zugreifst.


FAQ: Häufige Fragen

1. Kann ich mit VBA auch eine Webseite in Google Chrome öffnen?
Nein, der Standard-VBA-Code funktioniert nur mit Internet Explorer. Für Chrome benötigst du zusätzliche Bibliotheken oder Tools wie Selenium.

2. Wie kann ich mich automatisch bei mehreren Webseiten anmelden?
Erstelle für jede Webseite eine separate Subroutine oder verwende Parameter in einer einzigen Subroutine, um verschiedene URLs und Login-IDs zu handhaben.

3. Gibt es Einschränkungen bei der Verwendung von VBA für Web-Scraping?
Ja, viele Webseiten haben Sicherheitsmaßnahmen, die automatisierte Zugriffe einschränken. Achte darauf, die Nutzungsbedingungen der betreffenden Webseite zu beachten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige