VBA zur ID-Abfrage aus geöffneter IE-Instanz
Schritt-für-Schritt-Anleitung
Um die ID aus einer geöffneten Internet Explorer (IE) Instanz per VBA auszulesen, kannst du die folgenden Schritte befolgen:
-
VBA-Editor öffnen: Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
-
Neues Modul erstellen: Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
-
Code einfügen: Kopiere den folgenden VBA-Code in das Modul:
Sub GetIEId()
Dim objShell As Object
Dim win As Object
Dim al As Object
Dim sID As String
sID = "doc-info" ' Hier die ID anpassen
Set objShell = CreateObject("Shell.Application")
For Each win In objShell.Windows
If InStr(1, UCase(win.FullName), "IEXPLORE") > 0 Then
For Each al In win.Document.all
If al.ID = sID Then
MsgBox al.outerHTML
Range("A2") = al.outerHTML
End If
Next al
End If
Next win
Set objShell = Nothing
End Sub
-
Ausführen: Stelle sicher, dass der Internet Explorer mit der gewünschten Seite geöffnet ist, und führe das Makro aus, indem du F5 drückst oder das Makro über das Menü startest.
Häufige Fehler und Lösungen
-
"Objektvariable oder With-Blockvariable nicht festgelegt" Fehler: Dieser Fehler tritt auf, wenn der IE-Objekt nicht korrekt erkannt wird. Stelle sicher, dass der Internet Explorer geöffnet ist und die Seite geladen ist, bevor du das Makro ausführst.
-
ID wird nicht gefunden: Überprüfe, ob die angegebene ID (sID) in der HTML-Struktur der geöffneten Webseite vorhanden ist. Verwende die Entwicklertools (F12) in IE, um die IDs zu überprüfen.
Alternative Methoden
Falls du Schwierigkeiten mit dem Internet Explorer hast, kannst du auch PowerShell verwenden, um Informationen über laufende Prozesse zu erhalten. Hier ein Beispiel:
Get-Process | Where-Object {$_.ProcessName -eq "iexplore"} | Select-Object Id, ProcessName
Alternativ könntest du auch Microsoft Edge oder Chrome in Betracht ziehen, wenn du VBA mit Selenium kombinierst, um Webdaten zu extrahieren.
Praktische Beispiele
Ein einfaches Beispiel, um den Inhalt einer ID-Variable in Zelle A1 zu speichern, könnte so aussehen:
Sub GetContentById()
Dim objShell As Object
Dim win As Object
Dim al As Object
Dim sID As String
sID = "myId" ' Hier die ID anpassen
Set objShell = CreateObject("Shell.Application")
For Each win In objShell.Windows
If InStr(1, UCase(win.FullName), "IEXPLORE") > 0 Then
For Each al In win.Document.all
If al.ID = sID Then
Range("A1") = al.innerText
End If
Next al
End If
Next win
Set objShell = Nothing
End Sub
Dieses Skript speichert den Text der ID myId in Zelle A1.
Tipps für Profis
- Nutze
Debug.Print, um den Wert von Variablen während der Ausführung zu überprüfen, was dir hilft, Probleme schneller zu identifizieren.
- Achte darauf, deine Excel-Datei regelmäßig zu speichern, bevor du Makros ausführst, um Datenverlust zu vermeiden.
- Experimentiere mit verschiedenen IDs und HTML-Elementen, um ein besseres Verständnis für die Struktur der Webseite zu erhalten.
FAQ: Häufige Fragen
1. Ist dieser Code auch in Excel 365 anwendbar?
Ja, der Code funktioniert in Excel 365 sowie in älteren Versionen, solange du den Internet Explorer verwendest.
2. Was mache ich, wenn IE nicht mehr funktioniert?
Du kannst versuchen, die Webseite in einem anderen Browser zu öffnen und die Webdaten mit Selenium und VBA zu extrahieren. Alternativ kannst du PowerShell oder andere Skriptsprachen verwenden.