我有一张工作表Data
,网页根据动态链接抓取数据。还有另一个PivotTable
基于Data
工作表的数据透视表。
Data
工作表使用以下宏并在网页抓取新的更新数据之前清除单元格的内容。此数据每1分钟更新一次。
我有以下代码,它将刷新数据更新的数据透视表。 ThisWorkbook.Worksheets( “数据透视表”)。数据透视表( “PivotTable1”)。RefreshTable
由于数据大约需要20秒才能完成更新,因此没有数据(因为首先清除了单元格内容),因此要刷新数据透视表。所以,我收到了一个错误。
Data
使用以下代码更新数据:
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
我尝试将.RefreshStyle = xlInsertDeleteCells
更新为.RefreshStyle = xlOverwriteCells
。但它会覆盖单元格,直到新数据行结束。如果新数据(行数)小于旧数据的行,则不删除末尾的旧数据行。
我只希望保留最新更新的数据。
如何根据上述条件自动刷新数据透视表?
答案 0 :(得分:0)
尝试使用do循环,等待抓取完成。
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
答案 1 :(得分:0)
只需设置.BackgroundQuery = False
,这样您的查询就会同步执行(这意味着,它会在进行数据透视刷新之前等待加载数据)。