2017-07-27 6 views
3

Ich habe ein Arbeitsblatt Data, die Web eine Daten auf einer dynamischen Verknüpfung kratzt. Es gibt eine weitere PivotTable mit Pivot-Tabellen basierend auf dem Data Arbeitsblatt.Auto-Aktualisierung Pivot-Tabellen bei Datenänderung

Data Arbeitsblatt verwendet das folgende Makro und löscht den Inhalt der Zellen vor dem Scraping neuer aktualisierter Daten. Diese Daten werden alle 1 Minute aktualisiert.

Ich habe den folgenden Code, der die Pivot-Tabellen bei Datenaktualisierung aktualisieren wird. ThisWorkbook.Worksheets („Pivot-Tabelle“). Pivot-Tabellen („PivotTable1“). Refresh

Da die Daten etwa 20 Sekunden dauert die Aktualisierung abgeschlossen ist, gibt es keine Daten (wie die Zellinhalte gelöscht werden zuerst) für den Drehtisch erneuern. Also, ich bekomme einen Fehler.

Data verwendet den folgenden Code zu aktualisieren Daten:

With ThisWorkbook.Worksheets("Data").QueryTables.Add(Connection:= _ 
     "<URL redacted>", Destination:=ThisWorkbook.Worksheets("Data").Range("$A$1")) 
     .Name = "DataPull" 
     .FieldNames = True 
     .RowNumbers = False 
     .FillAdjacentFormulas = False 
     .PreserveFormatting = True 
     .RefreshOnFileOpen = False 
     .BackgroundQuery = True 
     .RefreshStyle = xlInsertDeleteCells 
     .SavePassword = False 
     .SaveData = True 
     .AdjustColumnWidth = True 
     .RefreshPeriod = 0 
     .WebSelectionType = xlEntirePage 
     .WebFormatting = xlWebFormattingNone 
     .WebPreFormattedTextToColumns = True 
     .WebConsecutiveDelimitersAsOne = True 
     .WebSingleBlockTextImport = False 
     .WebDisableDateRecognition = False 
     .WebDisableRedirections = False 
     .Refresh BackgroundQuery:=True '  .Delete 
End With 

Ich habe versucht, die .RefreshStyle = xlInsertDeleteCells-.RefreshStyle = xlOverwriteCells aktualisieren. Aber es überschreibt die Zellen bis zum Ende der Zeilen der neuen Daten. Wenn neue Daten (Anzahl der Zeilen) kleiner als die Zeilen der alten Daten sind, werden die alten Datenzeilen am Ende nicht gelöscht. Ich möchte nur die Daten vom letzten Update behalten.

Wie aktualisiere ich automatisch die Pivot-Tabellen basierend auf den oben genannten Bedingungen?

Antwort

0

Stellen Sie einfach .BackgroundQuery = False so dass Ihre Abfrage synchron ausgeführt wird (was bedeutet, es für die Daten warten wird die Pivot-Refresh, bevor Sie geladen werden).

+0

Vielen Dank. Ich aktualisierte .BackQuery = True zu False und auch .Refresh BackgroundQuery: = True zu False –

0

Versuchen Sie, eine do-Schleife zu verwenden, während Sie warten, bis das Scrapping abgeschlossen ist.

 Do 
     Err.Clear 
     On Error Resume Next 
     Debug.Print Err.Number 
     ThisWorkbook.Worksheets("PivotTable").PivotTables("PivotTable1").RefreshTable 
     Debug.Print Err.Number 
    Loop While Err.Number > 0 
Verwandte Themen