Thema Datum  Von Nutzer Rating
Antwort
13.10.2020 15:45:51 SW
NotSolved
13.10.2020 15:47:35 Gast57345
NotSolved
13.10.2020 16:01:54 Gast6494
NotSolved
13.10.2020 16:33:58 Gast33190
NotSolved
13.10.2020 17:28:52 Gast90095
NotSolved
Blau Mit PowerQuery mehrere Seiten zu einer Abfrage zusammenfassen ...
13.10.2020 20:57:09 Trägheit
Solved
14.10.2020 12:52:15 SW
NotSolved
14.10.2020 15:33:52 Trägheit
Solved
15.10.2020 19:26:13 SW
NotSolved

Ansicht des Beitrags:
Von:
Trägheit
Datum:
13.10.2020 20:57:09
Views:
507
Rating: Antwort:
 Nein
Thema:
Mit PowerQuery mehrere Seiten zu einer Abfrage zusammenfassen ...

Du könntest die Daten per PowerQuery in einem Rutsch abrufen.

  • SpielplanTagX ruft die Daten von der Seite für Spieltag X ab (z.B. X = 15 -> Spieltag 15)
  • Spielplan ruft SpielplanTagX mit dem Wert 1-38 auf und fügt die so gewonnen Tabellen zusammen

All das kannst du dir im Detail im PowerQuery-Editor (s. unten) von Excel anschauen.

Beachte das du unten (wenn eingeblendet auch rechts) den Status der Abfrage live verfolgen kannst.

Du kannst die Abfrage unten sogar abbrechen, wenn sie zu lange dauert.


Das Ergebnis schaut so aus:


Das Makro was das bewerkstelligt:

Option Explicit

Sub Spielplan_Importieren()
  
  Dim wkqSpielplanTagX  As Excel.WorkbookQuery
  Dim wkqSpielplan      As Excel.WorkbookQuery
  
'# PowerQuery's einrichten
  With ThisWorkbook.Queries
    
    On Error Resume Next
    .Item("Spielplan").Delete
    .Item("SpielplanTagX").Delete
    On Error GoTo 0
    
    'Funktion hinzufügen: SpielplanTagX
    Set wkqSpielplanTagX = _
        .Add(Name:="SpielplanTagX", _
          Formula:="(TagX as number) as table =>" & vbNewLine & _
                    "let" & vbNewLine & _
                        "Source = Web.Page(Web.Contents(""https://www.weltfussball.de/spielplan/3-liga-2016-2017-spieltag/"" & Number.ToText(TagX) & ""/""))," & vbNewLine & _
                        "Data = Table.RemoveColumns(Source{0}[Data], {""Column4"", ""Column7"", ""Column8""}, MissingField.Ignore)," & vbNewLine & _
                        "Renamed = Table.RenameColumns(Data, {{""Column1"", ""Datum""}, {""Column2"", ""Zeit""}, {""Column3"", ""Mannschaft1""}, {""Column5"", ""Mannschaft2""}, {""Column6"", ""Ergebnis""}}, MissingField.Ignore)," & vbNewLine & _
                        "Result = Renamed" & vbNewLine & _
                    "in" & vbNewLine & _
                        "Result")
    
    'Abfrage hinzufügen: Spielplan (ruft SpielplanTagX mit Parameter 1-38 auf)
    Set wkqSpielplan = _
        .Add(Name:="Spielplan", _
            Formula:="let" & vbNewLine & _
                        "TableList = Table.FromValue({1..38})," & vbNewLine & _
                        "FuncResult = Table.AddColumn(TableList, ""SpielplanTagX"", each SpielplanTagX([Value]))," & vbNewLine & _
                        "Data = Table.ExpandTableColumn(FuncResult, ""SpielplanTagX"", {""Datum"", ""Zeit"", ""Mannschaft1"", ""Mannschaft2"", ""Ergebnis""}, {""Datum"", ""Zeit"", ""Mannschaft1"", ""Mannschaft2"", ""Ergebnis""})," & vbNewLine & _
                        "Result = Table.RenameColumns(Data, {""Value"", ""Spieltag""})" & vbNewLine & _
                    "in" & vbNewLine & _
                        "Result")
  End With
  
'# Neues Tabellenblatt hinzufügen
'  und Spielplan-Daten darauf ablegen
  With ThisWorkbook.Worksheets.Add
    
    Dim qt As Excel.QueryTable
    
    Set qt = .ListObjects.Add( _
                  SourceType:=xlSrcExternal, _
                  Source:="OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=" & wkqSpielplan.Name, _
                  Destination:=.Range("A1") _
                ).QueryTable
    
    
    With qt
      
      .CommandType = xlCmdSql
      .CommandText = Array("SELECT * FROM [" & wkqSpielplan.Name & "]")
      
      .AdjustColumnWidth = True
      .RefreshOnFileOpen = False
      
      .RefreshPeriod = 0
      .BackgroundQuery = True     '! SQL-Abfrage wird im Hintergrund ausgeführt / blockiert Excel weniger
      
      Call .Refresh
      
    End With
  
  End With
  
End Sub

Hier findest du den PowerQuery Editor und die Abfagen / Verbindungen:

 

Grüße

Trägheit


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
13.10.2020 15:45:51 SW
NotSolved
13.10.2020 15:47:35 Gast57345
NotSolved
13.10.2020 16:01:54 Gast6494
NotSolved
13.10.2020 16:33:58 Gast33190
NotSolved
13.10.2020 17:28:52 Gast90095
NotSolved
Blau Mit PowerQuery mehrere Seiten zu einer Abfrage zusammenfassen ...
13.10.2020 20:57:09 Trägheit
Solved
14.10.2020 12:52:15 SW
NotSolved
14.10.2020 15:33:52 Trägheit
Solved
15.10.2020 19:26:13 SW
NotSolved