首页 文章

自动刷新数据更改时的数据透视表

提问于
浏览
3

我有一个工作表 Data ,它根据动态链接抓取数据 . 还有另一个 PivotTable 带有基于 Data 工作表的数据透视表 .

Data 工作表使用以下宏并在Web抓取新的更新数据之前清除单元格的内容 . 此数据每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 . 但它会覆盖单元格,直到新数据行结束 . 如果新数据(行数)小于旧数据的行,则不删除末尾的旧数据行 . 我只想保留最新更新的数据 .

如何根据上述条件自动刷新数据透视表?

2 回答

  • 0

    只需设置 .BackgroundQuery = False ,以便您的查询将同步执行(意味着,它将等待数据在进行数据透视刷新之前加载) .

  • 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
    

相关问题