Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

per VBA Exceldaten in HTML übergeben

Forumthread: per VBA Exceldaten in HTML übergeben

per VBA Exceldaten in HTML übergeben
05.06.2019 09:05:42
Nik
Guten Morgen,
ich brauche mal wieder eure Hilfe.
Wir sind seit kurzem auf ein web-basiertes Lagerverwaltungssystem umgestiegen und nun funktionieren meine Excel Makros nicht mehr.
ich würde gerne verstehen wie ich aus einer Excel Tabelle heraus Werte z.B. an eine Intranetseite übergebe.
Mein bisheriger Code aus verschiedenen Quellen zusammenklabustert:
Sub TEST()
Dim ieApp As Object
Set ieApp = CreateObject("InternetExplorer.Application")
ieApp.Visible = True
ieApp.navigate "https://peoplefinder.opel.com/"
Do: Loop Until ieApp.Busy = False
Do: Loop Until ieApp.Busy = False
With ieApp.document
Do: Loop Until .readyState = "complete"
.getelementbyid("SearchBox").Value = "Login" 'anpassen
.getelementbyid("gmSearchNav").Click
End With
Set ieApp = Nothing
End Sub

Die Seite geht zwar auf, aber der Debugger bringt die Fehlermeldung:
Laufzwitfehler '2147467259 (80004005)':
Die Methode 'Document' für das Objekt 'IWebBrowser2' ist fehlgeschlagen
und bleibt bei "With ieApp.document"stehen.
Kann mir da irgendjemand weiterhelfen oder in die richtige Richtung schubsen?
Danke im Voraus!
Gruss, Nik
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: per VBA Exceldaten in HTML übergeben
06.06.2019 10:46:04
Zwenn
Hallo Nik,
man kann nicht einfach ein beliebiges Makro nehmen, dass mal geschrieben wurde, um einen Login auf einer bestimmten Webseite auszuführen und nur die URL austauschen. Für solche Aufgaben muss man immer konkret auf den HTML-Quelltext der Seite programmieren. Ich habe Dir mal den Login für die angegebene URL neu geschrieben. Du brauchst nur Deinen Benutzernamen und Dein Passwort anpassen, wo es markiert ist.
Du möchtest vermutlich nicht nur einen Login und vielleicht den noch nicht mal auf der Opel Seite. Aber wie gesagt, programmiert werden solche Sachen immer individuell und ich nehme an, mit Deinem VBA Lvl und einer Seite im Intranet, an die kein Helfer rankommt, sieht es eher mau aus mit weiterer Hilfe.
Wenn Du Dich selber einlesen willst, dann recherchiere mal nach Web Scraping und DOM (Document Object Model). Ohne grundsätzlich programmieren zu können und ohne Kenntnis, wie man HTML-Quellcode zielgerichtet analysiert, wird das aber alles eher Try And Error.

Sub OpelLogin()
Dim browser As Object
Dim knotenUserName As Object
Dim knotenPassWort As Object
Dim knotenSubmitButton As Object
Dim url As String
Dim benutzerName As String
Dim passWort As String
'Benutzername und Passwort für den Login
benutzerName = "DEIN BENUTZERNAME" '
Viele Grüße,
Zwenn
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Excel-Daten mit VBA an HTML übergeben


Schritt-für-Schritt-Anleitung

Um Excel-Daten mithilfe von VBA an eine HTML-Seite zu übergeben, musst du zuerst sicherstellen, dass du den richtigen Zugang zur Webseite hast. Hier ist eine Schritt-für-Schritt-Anleitung:

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

  2. Neues Modul erstellen: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" und wähle "Einfügen" > "Modul".

  3. Code einfügen: Kopiere den folgenden Code in das Modul:

    Sub OpelLogin()
       Dim browser As Object
       Dim knotenUserName As Object
       Dim knotenPassWort As Object
       Dim knotenSubmitButton As Object
       Dim url As String
       Dim benutzerName As String
       Dim passWort As String
    
       ' Benutzerdaten
       benutzerName = "DEIN BENUTZERNAME"
       passWort = "DEIN PASSWORT"
       url = "https://peoplefinder.opel.com/"
    
       ' Internet Explorer öffnen
       Set browser = CreateObject("InternetExplorer.Application")
       browser.Visible = True
       browser.navigate url
    
       ' Warten bis die Seite vollständig geladen ist
       Do While browser.Busy Or browser.readyState <> 4: DoEvents: Loop
    
       ' Elemente aus dem HTML-Dokument abrufen
       Set knotenUserName = browser.document.getElementById("SearchBox")
       Set knotenPassWort = browser.document.getElementById("Password") ' Passwortfeld anpassen
       Set knotenSubmitButton = browser.document.getElementById("gmSearchNav")
    
       ' Werte übergeben
       knotenUserName.Value = benutzerName
       knotenPassWort.Value = passWort
       knotenSubmitButton.Click
    
       ' Aufräumen
       Set browser = Nothing
    End Sub
  4. Benutzerdaten anpassen: Ersetze DEIN BENUTZERNAME und DEIN PASSWORT durch deine tatsächlichen Anmeldedaten.

  5. Makro ausführen: Schließe den VBA-Editor und führe das Makro über ALT + F8 aus.


Häufige Fehler und Lösungen

  • Fehler '2147467259 (80004005)': Dieser Fehler tritt auf, wenn das VBA-Skript versucht, auf das Dokument zuzugreifen, bevor die Seite vollständig geladen ist. Stelle sicher, dass du die Do While-Schleifen zum Warten auf die vollständige Ladezeit der Webseite korrekt implementiert hast.

  • Element nicht gefunden: Wenn getElementById ein Element nicht finden kann, überprüfe den HTML-Code der Zielseite. Möglicherweise hat sich die ID des Elements geändert, oder du musst getElementsById verwenden, um mehrere Elemente zu erfassen.


Alternative Methoden

Wenn du nicht mit Internet Explorer arbeiten möchtest, kannst du auch andere Methoden verwenden, z.B. die Verwendung von XMLHttpRequest für eine API-Anfrage oder das Nutzen von Tools wie Selenium für die Automatisierung von Browsern.


Praktische Beispiele

Hier ist ein einfaches Beispiel, um Daten aus einer Excel-Tabelle an eine HTML-Seite zu übergeben:

Sub SubmitData()
    Dim ieApp As Object
    Set ieApp = CreateObject("InternetExplorer.Application")
    ieApp.Visible = True
    ieApp.navigate "https://example.com/form"

    Do While ieApp.Busy Or ieApp.readyState <> 4: DoEvents: Loop

    ' Werte aus Excel übernehmen
    ieApp.document.getElementById("nameField").Value = Sheets("Daten").Range("A1").Value
    ieApp.document.getElementById("emailField").Value = Sheets("Daten").Range("B1").Value
    ieApp.document.getElementById("submitButton").Click
End Sub

In diesem Beispiel wird angenommen, dass die Werte in den Zellen A1 und B1 der Tabelle „Daten“ stehen.


Tipps für Profis

  • Verwende getElementsById: Wenn du mehrere Elemente mit der gleichen ID hast, kann es sinnvoll sein, getElementsById zu verwenden, um eine Sammlung von Elementen zu erhalten.
  • Debugging: Nutze Debug.Print im Code, um Werte zu überprüfen und herauszufinden, wo im Code mögliche Fehler auftreten.
  • Sicherheit: Achte darauf, dass du keine sensiblen Daten im Code speicherst. Verwende stattdessen Umgebungsvariablen oder sichere Methoden zur Speicherung.

FAQ: Häufige Fragen

1. Wie kann ich Daten an eine andere Webseite senden? Du kannst den gleichen Ansatz verwenden, indem du die URL und die IDs der HTML-Elemente anpasst.

2. Funktioniert das auch mit anderen Browsern? Der gezeigte Code funktioniert hauptsächlich mit Internet Explorer. Für andere Browser wie Chrome oder Firefox benötigst du zusätzliche Tools wie Selenium.

3. Was ist Web Scraping? Web Scraping ist der Prozess, bei dem Daten von Webseiten extrahiert werden. Es ist wichtig, die rechtlichen Rahmenbedingungen zu beachten, bevor du damit beginnst.

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