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

Forumthread: Internet Explorer mit VBA

Internet Explorer mit VBA
19.07.2017 11:31:25
moexx
Hallo zusammen,
Ich habe mehrere Prozeduren, die auf den Internet Explorer(IE) zugreifen und dort auf verschiedenen Seiten Informationen holen.
Ich habe jetzt schon eine Routine gefunden, die dafür sorgt, dass eine bereits bestehende IE-Instanz genutzt werden soll.
Folgenden Code nutze ich dafür:
Public Function Explorer(url As String) As Object~
Dim objShell As Object
Dim vorhanden As Boolean
Set objShell = CreateObject("Shell.Application")
For Each Explorer In objShell.Windows
If InStr(1, UCase(Explorer.FullName), "IEXPLORE") > 0 Then
Explorer.Visible = False
Explorer.navigate url
vorhanden = True
Do
Application.Wait Now + TimeSerial(0, 0, 1)
Loop Until Explorer.Busy = False
End If
Next
If vorhanden = False Then
Set Explorer = CreateObject("InternetExplorer.Application")
Explorer.Visible = False
Explorer.navigate url
Do
Application.Wait Now + TimeSerial(0, 0, 1)
Loop Until Explorer.Busy = False
End If
Problem:
Wenn die Prozedur verlassen wird, kommt folgende Fehlermeldung:
"Objektvariable oder With-Blockvariable nicht festgelegt"
Die Fehlermeldung kommt nur, wenn beim ersten Aufruf eine IE-Instanz existiert. Sie kommt nicht, wenn Sie neu aufgebaut wird und beim nächsten Durchlauf besteht.
Viele Grüße
moexx
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Internet Explorer mit VBA
19.07.2017 12:44:33
mmat
Hallo,
du benutzt das Funktionsergebnis (Explorer) als Schleifenvariable. Wahrscheinlich wird diese am Ende der Schleife auf irgendeinen Quatsch gesetzt
Vorschlag: hier noch eine Zeile dazu
  vorhanden = True
Do
Application.Wait Now + TimeSerial(0, 0, 1)
Loop Until Explorer.Busy = False
Exit Function  'Zusätzlich
End If
vg, MM
Anzeige
AW: Internet Explorer mit VBA
19.07.2017 13:05:28
moexx
Hallo mmat,
hat geklappt. Vielen Dank für die schnelle Hilfe.
Viele Grüße
moexx
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Internet Explorer mit VBA nutzen


Schritt-für-Schritt-Anleitung

Um den Internet Explorer über VBA zu steuern, kannst du folgende Schritte befolgen:

  1. VBA-Editor öffnen:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Modul erstellen:

    • Klicke im Menü auf Einfügen und wähle Modul.
  3. Code einfügen:

    • Füge den folgenden Code in das Modul ein:
    Public Function Explorer(url As String) As Object
       Dim objShell As Object
       Dim vorhanden As Boolean
       Set objShell = CreateObject("Shell.Application")
       For Each Explorer In objShell.Windows
           If InStr(1, UCase(Explorer.FullName), "IEXPLORE") > 0 Then
               Explorer.Visible = False
               Explorer.navigate url
               vorhanden = True
               Do
                   Application.Wait Now + TimeSerial(0, 0, 1)
               Loop Until Explorer.Busy = False
               Exit Function
           End If
       Next
       If vorhanden = False Then
           Set Explorer = CreateObject("InternetExplorer.Application")
           Explorer.Visible = True
           Explorer.navigate url
           Do
               Application.Wait Now + TimeSerial(0, 0, 1)
           Loop Until Explorer.Busy = False
       End If
    End Function
  4. Funktion aufrufen:

    • Rufe die Funktion mit der gewünschten URL auf, z.B.:
      Call Explorer("http://www.example.com")

Häufige Fehler und Lösungen

  • Fehlermeldung: "Objektvariable oder With-Blockvariable nicht festgelegt":

    • Diese Fehlermeldung tritt häufig auf, wenn die IE-Instanz nicht korrekt erkannt wird. Stelle sicher, dass die Schleifenvariable nicht den Wert des Funktionsergebnisses überschreibt. Füge Exit Function in die Schleife ein, um die Funktion ordnungsgemäß zu beenden.
  • IE nicht sichtbar:

    • Wenn der Internet Explorer nicht sichtbar ist, stelle sicher, dass du Explorer.Visible = True setzt, nachdem du das Objekt erstellt hast.

Alternative Methoden

Falls du eine alternative Methode zur Automatisierung des Internet Explorers benötigst, kannst du auch die Selenium-Bibliothek für VBA verwenden. Diese ermöglicht eine flexiblere Browserautomatisierung und funktioniert auch mit anderen Browsern wie Chrome und Firefox.


Praktische Beispiele

Hier ist ein Beispiel, wie du den Internet Explorer verwenden kannst, um den Inhalt einer Webseite auszulesen:

Public Sub AuslesenBeispiel()
    Dim ie As Object
    Set ie = CreateObject("InternetExplorer.Application")
    ie.Visible = True
    ie.Navigate "http://www.example.com"

    Do While ie.Busy Or ie.ReadyState <> 4
        Application.Wait Now + TimeValue("00:00:01")
    Loop

    Dim seiteninhalt As String
    seiteninhalt = ie.document.body.innerHTML
    Debug.Print seiteninhalt  ' Gibt den HTML-Inhalt im Direktfenster aus

    ie.Quit
    Set ie = Nothing
End Sub

Tipps für Profis

  • Nutze VBA Internet Explorer Object effizient, indem du nur die notwendigen Elemente der Webseite anforderst.
  • Experimentiere mit VBA zwischenablage auslesen, um Daten von der Webseite in die Zwischenablage zu kopieren.
  • Verwende vba ie.document, um gezielt auf bestimmte HTML-Elemente zuzugreifen und diese auszulesen.

FAQ: Häufige Fragen

1. Kann ich den Internet Explorer auch im Hintergrund ausführen? Ja, du kannst Explorer.Visible = False setzen, um den Internet Explorer im Hintergrund auszuführen.

2. Welche Excel-Version benötige ich für die Nutzung von VBA mit dem Internet Explorer? Die Nutzung von VBA mit dem Internet Explorer ist in der Regel in Excel 2010 und neueren Versionen möglich. Stelle sicher, dass du die richtigen Sicherheitseinstellungen für das Ausführen von Makros festgelegt hast.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige