Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Webseite per VBA ausfüllen ohne Feldname

Webseite per VBA ausfüllen ohne Feldname
09.03.2016 10:02:15
Wolfgang
Guten Morgen,
mir ist bewusst, dass es das Thema Webseite ausfüllen per VBA schon des öfteren gegeben hat, ich finde dennoch keinerlei Lösung für mein derzeitiges Problem.
Mit folgendem Code kann ich ja problemlos die beiden Felder "sap-user" und "sap-password" ausfüllen und mich somit anmelden:

Set oIE = CreateObject("InternetExplorer.Application")
With oIE
.Visible = True
.Navigate2 sURL
With .Document.forms(0)
.elements("sap-user").Value = sUser
.elements("sap-password").Value = sPass
.Document.forms(0).submit
End With
End With

Für die Zeilen .elements(NAME).Value läßt sich der Name der Felder im IE 11 recht problemlos auslesen, in dem man in der Menüleiste Ansicht - Quelle auswählt und im Quelltext nach "input id" oder "input name" sucht.
Alternativ geht auch (aber bei unseren SAP-Seiten zum Beispiel nicht, da das Kontextmenü deaktiviert wurde) die Möglichkeit, nach Aufruf der Seite im IE die Taste F12 zu drücken und anschließend mit der rechten Maustaste in das gewünschte Feld klicken und im Kontextmenü "Element untersuchen" auswählen.
Die Zeile im Quelltext, die das Input-Feld beinhaltet, wird dann farblich hinterlegt.
Nach der Anmeldung werden aber alle Felder nur noch über JaveScripte in Forms / Iframes geladen und ich habe scheinbar keine Chance mehr, an die Feldnamen oder Feld-IDs der Inputfelder zu kommen.
Die JaveScripte habe ich mir auch gezogen und untersucht, doch darüber habe ich auch keine Feldnamen oder IDs ermittelt bekommen. Allerdings werden in den JavaScriten erneut andere JavaScripte geladen und da hatte ich keinerlei Chance mehr dran zu kommen.
Nun wäre meine Frage, habe ich eine Möglichkeit, auch ohne Ermittlung der Feldnamen oder Feld-ID die Felder dennoch zu befüllen, á la Inputfeld(0).Value = Wert1 ?
Danke für Eure Ideen und Vorschläge.

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Webseite per VBA ausfüllen ohne Feldname
09.03.2016 15:46:12
Anton
Hallo Wolfgang,
man könnte vielleicht so die Feldnamen oder Feld-IDs der Felder ermitteln:
Sub b()
Dim IEApp As Object, alls As Object
Set IEApp = CreateObject("InternetExplorer.Application")
IEApp.Visible = True
IEApp.Navigate "https://www.herber.de/forum/messages/1480836.html"'anpassen
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.Document.ReadyState = "complete"
For Each alls In IEApp.Document.all
If alls.nodename = "INPUT" Then
Debug.Print alls.outerhtml
End If
Next
IEApp.Quit
Set IEApp = Nothing
End Sub
mfg Anton
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Webseite per VBA ausfüllen ohne Feldname


Schritt-für-Schritt-Anleitung

Um eine Webseite per VBA ohne die Feldnamen oder Feld-IDs auszufüllen, kannst du folgenden Code verwenden. Diese Methode nutzt das InternetExplorer-Objekt, um die Webseite zu navigieren und die Eingabefelder zu befüllen.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Füge ein neues Modul ein, indem du mit der rechten Maustaste auf "VBAProject" klickst und "Einfügen" > "Modul" wählst.
  3. Kopiere und füge den folgenden Code in das Modul ein:
Sub FillWebPage()
    Dim oIE As Object
    Dim sURL As String
    sURL = "https://deine-webseite.com" 'Bitte anpassen

    Set oIE = CreateObject("InternetExplorer.Application")
    With oIE
        .Visible = True
        .Navigate2 sURL
        Do While .Busy Or .readyState <> 4: DoEvents: Loop
        With .Document.forms(0)
            ' Hier die Werte für die Felder befüllen
            .elements(0).Value = "Dein Benutzername" ' 0 für das erste Inputfeld
            .elements(1).Value = "Dein Passwort" ' 1 für das zweite Inputfeld
            .submit
        End With
    End With
    Set oIE = Nothing
End Sub
  1. Passe die URL und die Werte der Eingabefelder an deine Bedürfnisse an.
  2. Führe das Makro aus, um die Webseite zu befüllen.

Häufige Fehler und Lösungen

  • Fehler: "Element nicht gefunden"

    • Lösung: Stelle sicher, dass du die richtigen Indizes für .elements() verwendest. Prüfe die Reihenfolge der Input-Felder auf der Webseite.
  • Fehler: Die Seite lädt nicht vollständig

    • Lösung: Warte mit Do While .Busy Or .readyState <> 4: DoEvents: Loop, bis die Seite vollständig geladen ist, bevor du versuchst, die Felder zu befüllen.

Alternative Methoden

Wenn du die Feldnamen oder IDs nicht ermitteln kannst, kannst du auch JavaScript verwenden, um die Werte zu setzen:

Sub FillWithJavaScript()
    Dim oIE As Object
    Dim sURL As String
    sURL = "https://deine-webseite.com" 'Bitte anpassen

    Set oIE = CreateObject("InternetExplorer.Application")
    With oIE
        .Visible = True
        .Navigate2 sURL
        Do While .Busy Or .readyState <> 4: DoEvents: Loop
        .Document.parentWindow.execScript "document.getElementsByTagName('input')[0].value='Dein Benutzername';"
        .Document.parentWindow.execScript "document.getElementsByTagName('input')[1].value='Dein Passwort';"
        .Document.forms(0).submit
    End With
    Set oIE = Nothing
End Sub

Praktische Beispiele

Hier sind einige einfache Beispiele, wie du die VBA-Methoden in der Praxis anwenden kannst:

  1. Benutzerdaten für Logins speichern: Du kannst ein Excel-Blatt erstellen, das Benutzernamen und Passwörter speichert und diese Werte dann in das VBA-Skript einfügen.
  2. Automatisierte Formulare: Verwende ähnliche Skripte, um automatisch Formulare auf Webseiten auszufüllen, die regelmäßig genutzt werden.

Tipps für Profis

  • Nutze die Debug.Print-Anweisung, um die HTML-Struktur der Webseite zu untersuchen. So kannst du die Eingabefelder schneller identifizieren.
  • Teste deine Skripte in einer Entwicklungsumgebung, um sicherzustellen, dass sie korrekt funktionieren, bevor du sie in der Produktion einsetzt.
  • Berücksichtige Sicherheitsaspekte, insbesondere wenn du sensible Daten wie Passwörter verarbeitest.

FAQ: Häufige Fragen

1. Kann ich auch andere Browser verwenden? Ja, VBA unterstützt hauptsächlich Internet Explorer. Für andere Browser benötigst du zusätzliche Bibliotheken oder Tools.

2. Warum funktioniert mein Code nicht auf bestimmten Webseiten? Einige Webseiten verwenden Sicherheitsmaßnahmen wie CAPTCHA oder JavaScript, die die Automatisierung erschweren. Prüfe, ob die Webseite diese Mechanismen hat.

3. Wie kann ich die Zeit zwischen den Eingaben steuern? Du kannst die Application.Wait-Methode verwenden, um Pausen zwischen den Aktionen einzufügen. Beispiel: Application.Wait Now + TimeValue("00:00:01") für eine Sekunde.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige