Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1928to1932
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

vba, mehrere Seiten laden

vba, mehrere Seiten laden
28.04.2023 13:26:54
Fred


Hallo Excel Experten,

ich lade Daten über eine API (mit TOKEN)
Die Daten lassen sich anscheinend nur in "50er DS" laden.
http.....&page1
http.....&page2
http.....&page3
etc.
Kann ein Makro dies automatisieren, so das ich nicht "händisch" jedesmal im erw. Editor die Änderung vornehmen muss?
Zum Beispiel: Lade bis page5 ??
https://www.herber.de/bbs/user/158945.xlsb

Gruss
Fred

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: vba, mehrere Seiten laden
28.04.2023 14:40:32
Oberschlumpf
Hi Fred

deine Chance, Hilfe zu erhalten, könnte größer werden, wenn du uns noch mal deine Bsp-Datei zeigst - die SOLLTE dann aber auch DEN Code enthalten, den du bisher verwendest.

Denn ein möglicher Helfer muss ja nich das Rad neu erfinden - in deinem Fall nich noch mal bei 0 anfangen, da du da grundsätzlich per Code schon SEITE 1 nach Excel übertragen kannst.

Ciao
Thorsten


AW: vba, mehrere Seiten laden
28.04.2023 15:42:09
Fred
Hallo Thorsten,
bisher gibt es gar kein Makro (VBA). Das ist doch ne PQ Abfrage .. Ich dachte nur, das eventuell durch eine "Erweiterung" im erweiterten Editor es möglich wäre, dass ich mehrere "Seiten nacheinander" lade.

Gruss
Fred


Anzeige
hhab ich falsch verstanden, bitte wer anders
28.04.2023 15:47:00
Oberschlumpf
Hi Fred,

sorry, tut mir leid, ich hab dich falsch verstanden.
Was PQ betrifft, bin ich leider raus, weil ich mich damit leider noch gar nicht auskenne :-/

Ciao
Thorsten


Steige in PQ ein, es ist klasse!
28.04.2023 16:56:24
Yal
Hallo Thorsten,

nur Mut: PQ ist relativ einfach zu verstehen und kann an viele Stellen VBA ersetzen. Wäre es nur um das Entpivotieren zu verwenden!

Du kennst sicher schon diese Seite https://excelhero.de/power-query/power-query-ganz-einfach-erklaert
Der Dozent Daniel Kogan erklärt richig gut, man kommt schnell rein.

Ich selber mache PQ nur seit 2 Jahren.

VG
Yal


Anzeige
AW: Steige in PQ ein, es ist klasse!
28.04.2023 17:06:04
Oberschlumpf
Hi Yal,

jep, richtig vermutet, dieser Link gehört schon zu meinen Firefox-Favoriten :-)

Trotzdem aber vielen Dank dafür!

Und ja, ich weiß, wenn ich am Ball bleiben will, muss ich mich wohl eher früher als später damit beschäftigen.
Wer weiß, vielleicht ist ja "dein Aufruf" = "mein Auslöser" :-))

Ciao
Thorsten


AW: vba, mehrere Seiten laden
28.04.2023 16:52:23
Yal
Hallo Fred,

Du musst ein Parameter "Nummer" erzeugen, diese Param als Teil der Adresse machen, die Abfrage in einer Function umwandeln.
Dann eine separate, leere Abfrage: einer Spalte "Page": =List.Range({1..50},0)" (zum Test nur 1..3), in Tabelle umwandeln und eine Spalte "benutzerdefinierte Funktion aufrufen" und Page als Parameterwert übergeben.

Voilà: https://www.herber.de/bbs/user/158949.xlsb

VG
Yal


Anzeige
AW: vba, mehrere Seiten laden
28.04.2023 20:31:03
Fred
Hallo Yal,
vorweg entschuldige bitte, dass ich mich erst Stunden später zurückmelde. Mit meiner kranken Mutter wird es immer schlechter (lauter) und ich mußte mich heute Nachmittag erstmal hinlegen (passiert immer öfters ...)
Deine Lösung war (wie immer) ein Volltreffer, zudem bestens erklärend!
Zum Ende des Beitrags würde ich dich bitten, auf die beigefügte Mappe zu schauen.
https://www.herber.de/bbs/user/158954.xlsb
Hier wird u.a. ein Makro / Json-Converter eingesetzt, der mir die "Trefferzeiten" zu den entsprechenden Spielen anfügt (Spalten BG:BH)
Vorweg: Es funktioniert !
Ich weis nur nicht, ob das alles auf dem neuesten Stand ist, ob eventuell einiges überflüssig ist.
Ich habe das vor einiger Zeit komplett aus dem Web gesaugt.
Wenn dir etwas sofort auffällt, melde dich bitte nochmals darraufhin, ansonsten ...

Nochmals: Vielen, vielen Dank für deine kompetente Unterstützung!!
Gruss
Fred


Anzeige
AW: vba, mehrere Seiten laden
02.05.2023 18:52:43
Yal
Hallo Fred,

jetzt bin ich derjenige, der sich zeit lässt.
Deine Sub ist sauber. Beseitige nur die Variable, die nicht mehr gebraucht werden.
Variable, deren Zustand sich nicht ändern, sind Konstanten.
InStr ist immer null (wird als False interpretiert) oder positiv (wird als True interpretiert), da kann man kürzen.
Wenn der Trenner ein Leerzeichen ist, muss man nur dafür sorgen, dass diese am Ende beseitig wird und man muss nicht die Fälle "erste Befüllung", "folge Befüllung" verwalten.
Eine Variable "Cell" zu nennen ist unglücklich: zu nah am VBA "Cells": es erschwert das Lesen.

Sieht so aus (ich habe den Token rausgemacht):
Sub Fetch_GoalMins()
Dim StartTime As Long
Dim StartRow As Long, LastRow As Long
Dim Z As Range
Dim homeTeam As String, homeMins As String
Dim awayTeam As String, awayMins As String

Const matchURL = "https://api.b365api.com/v1/event/view?token="
Const token_Str = "xxx"

    StartRow = CLng(InputBox("Trage die Startzeile ein (11)"))
    LastRow = CLng(InputBox("Trage die letzte auszufüllende Zeile ein"))
    
    StartTime = Timer
    Set xmlHttp = CreateObject("MSXML2.ServerXMLHTTP.6.0")
    Application.ScreenUpdating = False
    
    For Each Z In Range(Cells(StartRow, 1), Cells(LastRow, 1))
        homeMins = ""
        awayMins = ""
        If Cells(Z.Row, 59).Value = "" And Z.Value > "" And Cells(Z.Row, 14).Value > "0-0" Then
            homeTeam = Cells(Z.Row, 12).Value
            awayTeam = Cells(Z.Row, 13).Value
Restart:
            xmlHttp.Open "GET", matchURL & token_Str & "&event_id=" & Z.Value, False
            xmlHttp.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"
            On Error GoTo SendError
            xmlHttp.send
            On Error GoTo 0
            
            Set JSON = JsonConverter.ParseJson(xmlHttp.responseText)
            
            For Each gameEvent In JSON("results")(1)("events")
                If InStr(1, gameEvent("text"), " Goal - ") And InStr(1, gameEvent("text"), "'") Then
                    If InStr(1, gameEvent("text"), homeTeam) Then
                        homeMins = homeMins & " " & Split(gameEvent("text"), "'")(0)
                    ElseIf InStr(1, gameEvent("text"), awayTeam) Then
                        awayMins = awayMins & " " & Split(gameEvent("text"), "'")(0)
                    End If
                End If
            Next gameEvent
            
            Cells(Z.Row, 59).Value = Trim(homeMins) 'ohne führenden Leerzeichen
            Cells(Z.Row, 60).Value = Trim(awayMins)
            Sleep ("200")
    '        If Z.Row > 11 Then Exit For
        End If
    Next Z


    Debug.Print Timer - StartTime
    MsgBox ("Finished")
    'IE.Quit
    Application.ScreenUpdating = True
    Exit Sub
SendError:
    Resume Restart
End Sub
VG
Yal


Anzeige
AW: vba, mehrere Seiten laden
03.05.2023 15:14:32
Fred
Hallo Yal,
wohl meine ganz persönliche Crux. Irgendwie komme ich mit den Webabfragen mittel TOKEN und Json-Converter etc. nicht klar.
Ich habe dein Makro 1:1 übernommen (nur Token eingesetzt) und nu passiert gar nichts :-)
Nach MakroStart kommt sofort die Meldung: "Finished"
Kannst du bitte nochmals auf die Datei schauen?!
https://www.herber.de/bbs/user/159017.xlsb

Gruss
Fred


AW: vba, mehrere Seiten laden
03.05.2023 16:38:06
Yal
Hallo Fred,

deine Zeile
For Each Z In Range(Cells(StartRow, 1), Cells(LastRow, 1))
setzt auf kein vordefiniertes Blatt. Es wird immer das aktuell aktives Blatt genommen.

Ansonsten müsstest Du im Schritt-Modus bei offenen Lokalfenster durchgehen, um zu sehen, was da schief läuft. Debug kann sehr zeitaufwendig sein. Ist aber auch lehrreich. Das kann ich dir nicht wegnehmen.

VG
Yal

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige