MS Excel Webabfrage VBA

Diskutiere und helfe bei MS Excel Webabfrage VBA im Bereich Microsoft Office im Windows Info bei einer Lösung; Hallo zusammen, ich habe folgendes Problem. Es gibt eine Vielzahl von Websites, die ich regelmäßig aus dem Web holen möchte und die sich von Zeit... Dieses Thema im Forum "Microsoft Office" wurde erstellt von Manuel_Microsoft, 7. August 2020.

  1. MS Excel Webabfrage VBA


    Hallo zusammen,


    ich habe folgendes Problem.


    Es gibt eine Vielzahl von Websites, die ich regelmäßig aus dem Web holen möchte und die sich von Zeit zu Zeit minimal ändern.

    Im Wesentlichen unterschieden sich diese nur in einer fortlaufenden Nummer am Ende. Also: www.Beispiel.de/Text/?Filterkriterien5 dann 6, 7 et..


    Ich habe dafür den nachfolgenden VBA-Code geschrieben:


    Sub webimport



    Dim url As String

    Dim ws As Worksheet

    Dim qt As QueryTable



    Worksheets"Tabelle1".Select

    ActiveSheet.Cells6, 1.Select

    url = ActiveSheet.Cells6, 1.Value


    Set ws = Worksheets.Add



    Set qt = ws.QueryTables.Add _

    Connection:="URL;" & url, _

    Destination:=Range"A1"


    qt.Refresh BackgroundQuery:=False



    End Sub


    Mit dem Marko führt das allerdings zu einer Fehlermeldung Laufzeitfehler '1004', Ungültige Webabfrage.

    Das Makro funktioniert dagegen einwandfrei, wenn ich keine Filterkriterien, sondern lediglich den URL-Teil vor dem "?" verwende.

    In meinem Beispiel also www.Beispiel.de/Text. Was allerdings nicht den Daten entspricht, die ich haben möchte, da die entscheidenen Filterkriterien fehlen.


    Gehe ich über das Menüband auf "Daten" und starte manuell eine Datenabfrage, funktionieren die URLs jedoch so wie sie sein sollen problemlos.


    Kann mir jemand dabei helfen, den Fehler / Unterschied zwischen manueller Vorgehensweise und Makro zu beheben?



    Sofern hilfreich: Es geht dabei um den Aktien-Finder von Onvista. Also den URLs:

    https://www.onvista.de/aktien/finder ;


    https://www.onvista.de/aktien/finde...year]=2019&DIVIDEND_YIELD[year]=2019&offset=0


    und


    https://www.onvista.de/aktien/finder/?continent[0]=Europa&PROFIT_PER_SHARE[enabled]=1&PROFIT_KGV[enabled]=1&DIVIDEND_AMOUNT[enabled]=1&DIVIDEND_YIELD[enabled]=1&PROFIT_PER_SHARE[year]=2019&PROFIT_KGV[year]=2019&DIVIDEND_AMOUNT[year]=2019&DIVIDEND_YIELD[year]=2019&offset=50


    etc. fortlaufende Nummerierung am Ende


    Vielen Dank und schöne Grüße
     
  2. Manuel_Microsoft Win User

    MS Excel Webabfrage VBA

    Es werden leider nur 50 Ergebnisse pro Seite angezeigt. Ich muss also das offset immer weider um 50 erhöhen, um alle abrufen zu können.

    Und manuell, also wie auf deinem Bild, gehen die Links ja alle.
  3. Andreas Killer Win User

    MS Excel Webabfrage VBA

    Und warum nicht gleich das offset weglassen und alle Elemente laden... mit Power Query ohne VBA?

    Andreas.


    [​IMG]
  4. Andreas Killer Win User

    MS Excel Webabfrage VBA

    Es werden leider nur 50 Ergebnisse pro Seite angezeigt. Ich muss also das offset immer weider um 50 erhöhen, um alle abrufen zu können.
    Jaja, diese Webabfragen...

    Also das Problem mit Deinem Code ist ein Problem des Query, da ist die URL zu lang...

    Mal von irgendwelchen anderen Code mit HTTP request und Gedöns abgesehen (da bin ich raus, keine Lust mehr zu sowas) kann man sich eine relativ einfache Lösung mit PQ basteln. Dazu brauchen wir jedoch auch den erweiterten Editor in PQ...

    Also machen wir mal eine einfache Webabfrage mit PQ wie üblich mit offset=0 und schauen was da für ein MCode rauskommt:

    let
    
     Source = Web.Page(Web.Contents("https://www.onvista.de/aktien/finder/?continent[0]=Europa&PROFIT_PER_SHARE[enabled]=1&PROFIT_KGV[enabled]=1&DIVIDEND_AMOUNT[enabled]=1&DIVIDEND_YIELD[enabled]=1&PROFIT_PER_SHARE[year]=2019&PROFIT_KGV[year]=2019&DIVIDEND_AMOUNT[year]=2019&DIVIDEND_YIELD[year]=2019&offset=0")),
    
     Data0 = Source{0}[Data],
    
     #"Changed Type" = Table.TransformColumnTypes(Data0,{{"WKN", type text}, {"Wert", type text}, {"Branche", type text}, {"Land", type text}, {"Land2", type text}, {"Gewinn pro Aktie (€)", type number}, {"KGV", type number}, {"Dividende (€)", type number},
     {"Dividendenrendite (%)", type number}})
    
    in
    
     #"Changed Type"
    Im Prinzip müssen wir das nur mehrfach aufrufen und statt offset=0 eben offset=50 usw. bekommen => VBA in grün.

    In PQ kann man diesen MCode in eine Funktion umwandeln, dazu muss man nur eine Zeile mit

    () =>

    als erste Zeile einfügen. In den Klammern kann man Parameter angeben, für uns ist

    (ofs as number) =>

    passend.

    MCode ist kein VBA und hier muss man zwingend a) auf die Schreibweise achten und b) die Datentypen korrekt umwandlen.

    Also machen wir aus

    offset=0"

    das

    offset=" & Number.ToText(ofs)

    komplett:

    (ofs as number) =>
    
    let
    
     Source = Web.Page(Web.Contents("https://www.onvista.de/aktien/finder/?continent[0]=Europa&PROFIT_PER_SHARE[enabled]=1&PROFIT_KGV[enabled]=1&DIVIDEND_AMOUNT[enabled]=1&DIVIDEND_YIELD[enabled]=1&PROFIT_PER_SHARE[year]=2019&PROFIT_KGV[year]=2019&DIVIDEND_AMOUNT[year]=2019&DIVIDEND_YIELD[year]=2019&offset="
     & Number.ToText(ofs))),
    
     Data0 = Source{0}[Data],
    
     #"Changed Type" = Table.TransformColumnTypes(Data0,{{"WKN", type text}, {"Wert", type text}, {"Branche", type text}, {"Land", type text}, {"Land2", type text}, {"Gewinn pro Aktie (€)", type number}, {"KGV", type number}, {"Dividende (€)", type number},
     {"Dividendenrendite (%)", type number}})
    
    in
    
     #"Changed Type"
    Sieht in PQ dann so aus:


    [​IMG]


    Auf der rechten Seite steht der Name der Funktion "Ergebnisse (9513 Treffer)", da geben wir einfach mal My als Namen ein:


    [​IMG]


    Soweit so gut.

    Anmerkung: Man kann in PQ auch Schleifen programmieren und damit alles folgende eleganter lösen, aber ich bin nicht soo gut in MCode das ich hier eine "schicke" Lösung posten möchte.

    Also ein einfacher Workaround, den man auch gut für andere Fälle gebrauchen kann, zurück zu Excel:

    Wir erstellen eine Tabelle und berechnen da die Offset-Werte, erst mal ein paar zum Test:


    [​IMG]


    Diese laden wir in PQ und nun Spalte hinzufügen \ Benutzerdefinierte Funktion aufrufen:


    [​IMG]


    und bekommen das


    [​IMG]


    Nun auf den Doppelpfeil rechts neben "My" klicken und den Haken bei "blabla Präfix verwenden" entfernen


    [​IMG]


    Ok

    Optional: Rechts-Klick auf die Spalte Offset und Entfernen

    Optional: Sortieren nach belieben

    Start \ Schließen und Laden

    Wenn das einmal steht und das aktualisieren ansteht, dann Rechts-Klick auf die Tabelle und Aktualisieren, bzw. Daten \ Alle aktualisieren.

    Der große Haken zum Schluß: Webseiten ändern sehr oft Ihre Gestaltung und meistens funktionieren Webabfragen nach ein paar Monaten nicht mehr. Gerade wenn es um Geld geht drehen die Banken mind. den "Nichtkunden" schnell den Hahn zu, weil wenn sich eine
    offene Seite herum spricht, dann wird diese sehr schnell Millionenfach angepingt und der Server überlastet.

    Alles klar?

    Andreas.
  5. OthmarTschäppät Win User

    Excel 2016 für Mac / Hier externe Datenabfrage

    Auch wenn dadurch das Problem nicht gelöst wurde; trotzdem danke für den Hinweis zum UserVoice-Forum. (Workaround ist vorübergehend, die Webabfrage im Excel für Windows zu machen - danach kann die Aktualisierung im Excel für Mac gemacht werden. (Habe es
    soeben für die Cryptokurse gemacht.)
  6. Claus Busch Win User

    Excel 2013 DDE Anbindung

    Hallo Stephane,



    vom Metatrader war hier noch nie die Rede. Ich dachte du hättest aus Excel heraus eine Webabfrage gemacht.

    Da du in Excel Formeln verwendest, bekommst du genau das, was der Metatrader liefert. Also musst du nach einer Einstellung im Metatrader suchen bzw. dessen Support besuchen.



    Mit freundlichen Grüßen

    Claus
  7. User Advert


    Hi,

    willkommen im Windows Forum!
Thema:

MS Excel Webabfrage VBA - Microsoft Office

Die Seite wird geladen...

MS Excel Webabfrage VBA - Similar Threads - Excel Webabfrage VBA

Forum Datum

Excel VBA

Excel VBA: Hallobenutze schon länger ein selbst geschriebenes Addin eine Berechnungsfunktion. Diese ist bei den AddIns Datei > Optionen > AddIn auch angezeigt und funktioniert auch über benutzerdefinierte...
Microsoft Office 9. Juni 2022

Excel-Webabfrage klappt nicht

Excel-Webabfrage klappt nicht: Bei der Eingabe folgender Abfrage……“wird eine Verbindung hergestellt“, aber dann kommt diese Fehlermeldung…Wenn ich dieselbe URL in eine Abfrage in einer älteren Excelversion Office 2007 eingebe...
Microsoft Office 5. Februar 2022

Excel - VBA

Excel - VBA: Hallo Zusammen! Kann mir jemand sagen, wie ich es einfacher gestallten kann? Ich muss dies von Zeile 2 bis 1915 machen. LG Nikola Sub WennDann If Range"G2" = "" Then Range"D2" = Range"H2"...
Microsoft Office 8. Oktober 2020

excel vba

excel vba: hi ich habe: Worksheets("test2").Range("b3").Copy Destination:=Worksheets("Mdax").Range("b20") was schön und gut funktioniert nur kann ich damit auch die Zielzelle definieren? In meinem...
Microsoft Office 24. Juli 2019

EXCEL-VBA.

EXCEL-VBA.: Wie splittet man den Bildschirm bei Programmtests in 1. Code-Fenster, 2. EXCEL-Arbeitsblatt. Ich weiß, dass es geht aber nicht wie. Heißen Dank!
Microsoft Office 10. Dezember 2018

MS-Supportseite zu Excel VBA finden

MS-Supportseite zu Excel VBA finden: Hallo! Mehr durch Zufall habe ich diese Original - MS-SupportSeite "Auswählen von Zellen/Bereichen mithilfe von Visual Basic-Prozeduren in Excel" entdeckt und hätte nun gerne gewusst, ob es Seiten...
Microsoft Office 22. Februar 2018

excel 2013 webabfrage nicht möglich

excel 2013 webabfrage nicht möglich: excel 2013 auf computer neu installiert, neue tabelle angelegt, beliebige webabfrage schließt ohne fehlermeldung die arbeitsmappe.
Microsoft Office 30. Mai 2017
MS Excel Webabfrage VBA solved
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.