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

Tab in Firefox auch wieder schliessen

Forumthread: Tab in Firefox auch wieder schliessen

Tab in Firefox auch wieder schliessen
05.08.2022 13:41:00
Richard
Hi,
mit folgendem Code öffne ich unter Firefox eine Seite und kopiere die Daten in Excel. Allerdings möcte ich auch den gerade geöffneten Tab anschliessend wieder schliessen.
Kann hier jemand weiter helfen?

Function OpenUrl(sURL As String, InFireFox As Boolean) As Integer
If InFireFox Then
OpenUrl = Shell("C:\Programme\Mozilla Firefox\firefox.exe " & sURL)
End If
End Function

Sub TestOpenUrl()
intResult = OpenUrl("https://www.onvista.de/aktien/handelsplaetze/Aixtron-Aktie-DE000A0WMPJ6", True)
Application.Wait Now + TimeSerial(0, 0, 3)
Application.SendKeys "^a"
Application.Wait Now + TimeSerial(0, 0, 3)
Application.SendKeys "^c"
Application.Wait Now + TimeSerial(0, 0, 3)
Worksheets("Tabelle1").Select
Range("A1").Select
ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False
End Sub
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tab in Firefox auch wieder schliessen
05.08.2022 14:55:38
Zwenn
Hallo Richard,
mit dem Aufruf eines Browsers über die Shell und dann mit SendKeys zu arbeiten ist ... ohne Deine Bemühungen schmälern zu wollen ... ungeschickt. Wenn Du mit einem Browser arbeiten willst (schonmal gut, dass Du es nicht mit dem IE versuchst, denn der ist ausgemustert), dann verwende SeleniumBasic.
Schaue in die akzeptierte Antwort von Yasser Khalil, um einen Einstieg zu bekommen. Achte darauf, ggf. die aktuellsten Versionen zu verwenden. SeleniumBasic selbst wird nicht mehr gepflegt, funktioniert mit aktuellen Browsern und den zugehörigen WebDrivern aber nach wie vor. Verwende Chrome oder Edge, FireFox wird seit längerem nicht mehr unterstützt, soweit ich weiß:
https://stackoverflow.com/questions/57216623/using-google-chrome-in-selenium-vba-installation-steps
Allerdings kann onvista auch über xhr abgerufen werden, was um einiges schneller geht, da nur die HTML Seite abgerufen wird. Keine StyleSheets, Grafiken, usw. und keine Browseraufrufe. Um am Ende an die gewünschten Daten zu kommen, ist der Aufwand dann gleich.
Hier ein kurzer Code, wie die Tabelle mit den Werten (ich denke um die geht es Dir), mittels xhr runtergeladen werden kann:

Sub getOnvista()
Dim doc As Object
Dim url As String
url = "https://www.onvista.de/aktien/handelsplaetze/Aixtron-Aktie-DE000A0WMPJ6"
Set doc = CreateObject("htmlFile")
With CreateObject("MSXML2.ServerXMLHTTP.6.0")
.Open "GET", url, False
.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0"
.Send
If .Status = 200 Then
doc.body.innerHTML = .responseText
MsgBox doc.getElementsByClassName("grid")(3).innertext
Else
MsgBox "Page not loaded. HTTP status " & .Status
End If
End With
End Sub
Dass das nicht intuitiv zu verstehen ist, ist mir klar. Aber vertiefe Dein Wissen nicht in Shell und SendKeys.
Viele Grüße,
Zwenn
Anzeige
AW: Tab in Firefox auch wieder schliessen
05.08.2022 15:10:05
Richard
Hi,
vielen Dank hierfür...... wenn ich allerdings deinen Code laufen lasse, bekomme ich einen Laufzeitfehler.......
AW: Tab in Firefox auch wieder schliessen
05.08.2022 15:55:30
Zwenn
Etwas wenig Infos für eine hilfreiche Reaktion, denn bei mir läuft das ganz wunderbar. Welche Fehlermeldung und welche Zeile wird gelb markiert?
AW: Tab in Firefox auch wieder schliessen
05.08.2022 15:16:50
Alwin
Hallo Richard,
da du das eh schon alles mit .sendkeys machst, dann vielleicht so:

Function OpenUrl(sURL As String, InFireFox As Boolean) As Integer
If InFireFox Then
OpenUrl = Shell("C:\Programme\Mozilla Firefox\firefox.exe " & sURL)
End If
End Function
Sub TestOpenUrl()
intResult = OpenUrl("https://www.onvista.de/aktien/handelsplaetze/Aixtron-Aktie-DE000A0WMPJ6", True)
Application.Wait Now + TimeSerial(0, 0, 3)
Application.SendKeys "^a"
Application.Wait Now + TimeSerial(0, 0, 3)
Application.SendKeys "^c"
Application.Wait Now + TimeSerial(0, 0, 3)
Worksheets("Tabelle1").Select
Range("A1").Select
ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False
'Application.Wait Now + TimeSerial(0, 0, 3)
Application.SendKeys "^{F4}", True
End Sub
Ich habe mal den letzten Wait Befehl auskommentiert drin gelassen. Falls es stolpern sollte, nimms du einfach die Auskommentierung raus.
Gruß Uwe
Anzeige
AW: Tab in Firefox auch wieder schliessen
05.08.2022 16:39:41
Alwin
der Gedanke ganz ohne Browser hat mich noch auf folgende Idee gebracht:

Sub OnVistaHolen()
Application.ScreenUpdating = False
Application.CutCopyMode = False
With Sheets("Tabelle1").QueryTables.Add(Connection:= _
"URL;https://www.onvista.de/aktien/handelsplaetze/Aixtron-Aktie-DE000A0WMPJ6" _
, Destination:=Range("$A$1"))
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.Refresh BackgroundQuery:=False
End With
Application.ScreenUpdating = True
End Sub
Ich habs getestet. Es scheint die Seite brauchbar auszulesen. Ist aber auch nicht die Allerschnellste.
Gruß Uwe
Anzeige
AW: Tab in Firefox auch wieder schliessen
05.08.2022 18:42:04
Zwenn
Hallo Uwe,
das ist doch eine schöne kurze Lösung. Das Einlesen der Daten ging mit Deinem Code recht schnell bei mir. 10 Sekunden geschätzt. Auch hier muss man natürlich noch die Daten aus dem Datenwust holen, die es wirklich sein sollen.
Viele Grüße,
Zwenn
AW: Tab in Firefox auch wieder schliessen
06.08.2022 16:12:43
Richard
Super...vielen Dank euch !
Anzeige
AW: Tab in Firefox auch wieder schliessen
07.08.2022 09:31:52
Richard
Hi,
ich habe leider feststellen müssen, dass die elegantere Lösung die Webseite nicht richtig ausliest (historische Daten fehlen bzw. werden nicht übertragen)... ich dachte es wäre dem Browser geschuldet, also habe ich Firefox eingebaut....doch das Ergebnis blieb...
Also muss ich leider zu der Lösung mit den Send.keys zurück...sei es drum...
Hier wäre nur die Frage, wie ich den geöffneten Tab auch wieder per VBA schliessen kann?

Function OpenUrl(sURL As String, InFireFox As Boolean) As Integer
If InFireFox Then
OpenUrl = Shell("C:\Programme\Mozilla Firefox\firefox.exe " & sURL)
End If
End Function

Sub TestOpenUrl()
intResult = OpenUrl("https://www.onvista.de/aktien/handelsplaetze/Aixtron-Aktie-DE000A0WMPJ6", True)
Application.Wait Now + TimeSerial(0, 0, 3)
Application.SendKeys "^a"
Application.Wait Now + TimeSerial(0, 0, 3)
Application.SendKeys "^c"
Application.Wait Now + TimeSerial(0, 0, 3)
Worksheets("Tabelle1").Select
Range("A1").Select
ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False
End Sub

Anzeige
AW: Tab in Firefox auch wieder schliessen
07.08.2022 14:39:11
Alwin
Hallo,
ja das sehe ich jetzt auch. Das Sendkey:

Application.SendKeys "^{F4}", True
Da wird Strg/F4 ausgeführt und der aktive Tab im Browser geschlossen.
Gruß Uwe
AW: Tab in Firefox auch wieder schliessen
08.08.2022 14:19:44
Richard
Hi,
wenn ich die Zeile hinzufüge...kriege ich immer für genau diese Zeile einen Laufzeitfehler 1004....

Function OpenUrl(sURL As String, InFireFox As Boolean) As Integer
If InFireFox Then
OpenUrl = Shell("C:\Programme\Mozilla Firefox\firefox.exe " & sURL)
End If
End Function

Sub AixtronKurse()
intResult = OpenUrl("https://www.onvista.de/aktien/handelsplaetze/Aixtron-Aktie-DE000A0WMPJ6", True)
Application.Wait Now + TimeSerial(0, 0, 3)
Application.SendKeys "^a"
Application.Wait Now + TimeSerial(0, 0, 3)
Application.SendKeys "^c"
Application.Wait Now + TimeSerial(0, 0, 3)
Application.SendKeys "^{F4}", True
Worksheets("Tabelle1").Select
Range("A1").Select
ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False
End Sub

Anzeige
AW: Tab in Firefox auch wieder schliessen
08.08.2022 16:10:01
Alwin
Hallo,
wenn es zu einer Fehlermeldung kommt, liegt es daran, dass dieses SendKey ^ = StrgTaste und {F4}=F4 Taste dein Browser so nicht eingestellt ist.
Teste mal bei welcher Tastenkombination dein Browser (Firefoxversion) der aktive Tab geschlossen wird. Wenn du die Tastenkombi rausgefunden hast (mittels Addon oder ausprobieren) kannst du dir bei Tante Google das Sendkey zusammenbauen. Bei mir funktioniert Strg/F4 auf jeden Fall ohne Probleme.
Gruß Uwe
Anzeige
AW: Tab in Firefox auch wieder schliessen
08.08.2022 17:28:36
Zwenn
Funktioniert bei mir auch genau so.
;
Anzeige
Anzeige

Infobox / Tutorial

Tab in Firefox wieder schließen mit VBA


Schritt-für-Schritt-Anleitung

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

  2. Neues Modul erstellen: Klicke mit der rechten Maustaste auf "VBA-Projekt (dein Arbeitsblattname)" und wähle Einfügen > Modul.

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

    Function OpenUrl(sURL As String, InFireFox As Boolean) As Integer
        If InFireFox Then
            OpenUrl = Shell("C:\Programme\Mozilla Firefox\firefox.exe " & sURL)
        End If
    End Function
    
    Sub TestOpenUrl()
        intResult = OpenUrl("https://www.onvista.de/aktien/handelsplaetze/Aixtron-Aktie-DE000A0WMPJ6", True)
        Application.Wait Now + TimeSerial(0, 0, 3)
        Application.SendKeys "^a"
        Application.Wait Now + TimeSerial(0, 0, 3)
        Application.SendKeys "^c"
        Application.Wait Now + TimeSerial(0, 0, 3)
        Worksheets("Tabelle1").Select
        Range("A1").Select
        ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False
        Application.SendKeys "^{F4}", True ' Tab schließen
    End Sub
  4. Code ausführen: Schließe den VBA-Editor und führe das Makro TestOpenUrl aus. Du solltest nun die Daten in Excel sehen und der Firefox-Tab wird geschlossen.


Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: Dieser Fehler kann auftreten, wenn die SendKeys-Anweisung nicht korrekt verarbeitet wird. Stelle sicher, dass die Tastenkombination für das Schließen des Tabs (Strg + F4) in deiner Firefox-Version funktioniert.

  • Tab bleibt geöffnet: Überprüfe, ob du die richtige Tastenkombination verwendest. Es kann sein, dass die Kombination in deiner Firefox-Version abweicht. Probiere andere Kombinationen wie Strg + W.


Alternative Methoden

Anstatt VBA und SendKeys zu verwenden, kannst du auch Selenium verwenden, um deinen Browser zu steuern. Hier einige Schritte:

  1. SeleniumBasic installieren: Lade die neueste Version von SeleniumBasic herunter und installiere sie.
  2. Selenium im VBA verwenden: Füge den folgenden Code in dein Modul ein:

    Dim driver As New Selenium.ChromeDriver
    driver.Get "https://www.onvista.de/aktien/handelsplaetze/Aixtron-Aktie-DE000A0WMPJ6"
    ' ... Daten abrufen ...
    driver.Quit ' Schließt den Tab

Diese Methode ist flexibler und weniger fehleranfällig als die Verwendung von SendKeys.


Praktische Beispiele

Hier sind einige Beispielcodes, die die oben genannten Methoden nutzen:

  1. Daten mit SendKeys abrufen:

    Sub GetAixtronData()
        intResult = OpenUrl("https://www.onvista.de/aktien/handelsplaetze/Aixtron-Aktie-DE000A0WMPJ6", True)
        ' ... Kopieren und Einfügen ...
        Application.SendKeys "^{F4}", True ' Schließt den Tab
    End Sub
  2. Daten mit Selenium abrufen:

    Sub GetDataWithSelenium()
        Dim driver As New Selenium.ChromeDriver
        driver.Get "https://www.onvista.de/aktien/handelsplaetze/Aixtron-Aktie-DE000A0WMPJ6"
        ' ... Daten extrahieren ...
        driver.Quit ' Tab schließen
    End Sub

Tipps für Profis

  • Selenium verwenden: Für komplexere Aufgaben ist Selenium die bessere Wahl. Es ist robuster und bietet mehr Möglichkeiten zur Interaktion mit Webseiten.
  • Verwendung von Application.Wait: Achte darauf, dass du genügend Wartezeit zwischen den SendKeys-Befehlen einfügst, um sicherzustellen, dass die vorherige Aktion abgeschlossen ist.
  • Browser-Addons: Nutze Firefox-Addons, um herauszufinden, welche Tastenkombination für das Schließen von Tabs funktioniert.

FAQ: Häufige Fragen

1. Warum funktioniert SendKeys nicht immer?
SendKeys kann unzuverlässig sein, da es von der aktuellen Fensterfokussierung abhängt. Wenn ein anderes Fenster im Vordergrund ist, kann der Befehl nicht korrekt ausgeführt werden.

2. Welche Excel-Version benötige ich für diese Methoden?
Diese Methoden sollten in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen, wie Excel 2010, 2013, 2016 und 2019.

3. Gibt es eine Möglichkeit, den Tab in Firefox ohne VBA zu schließen?
Ja, du kannst die integrierte Tastenkombination Strg + W verwenden, um einen Tab schnell zu schließen, ohne VBA zu nutzen.

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