首次运行时自动刷新excel中的数据透视表数据

时间:2013-04-22 15:39:02

标签: sql-server-2008 excel-vba pivot-table vba excel

背景:我有2张excel表:

  1. 包含数据透视表和宏“刷新”
  2. 来自SQL Server的数据
  3. 宏包含 VBA代码,用于自动刷新数据和更新数据透视表。数据每晚更新。以下是 VBA代码:

     Sub Refresh()
     ActiveWorkBook.RefreshAll 
     End Sub
    

    问题:

    1. 当我第一次运行我的宏时,需要5分钟来执行我的 数据透视表未使用新数据更新。

    2. 当我第二次运行时,它会完美执行。

    3. 我希望我的宏在第一次运行时完美执行。

      非常感谢任何帮助。

      注意:这是我的第一篇文章,所以请容忍我的编辑。

2 个答案:

答案 0 :(得分:1)

我解决了我的问题:

  1. 我删除了Macro并使用了 Active-x-Control 按钮。因此,在button_click()上刷新ExternalData以及pivotTables < / p>

  2. 所以,这是代码:我删除了下面的代码

    ActiveWorkBook.RefreshAll

  3. 并用

    更新
    Private Sub CommandButton1_Click()
    Dim Data_query As Worksheet
    Set Data_query = Sheets("Data")
    Data_query.Select
    Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
    Application.ScreenUpdating = False
    Sheets("sheet1").Select
    Sheets("sheet1").PivotTables("PivotTable1").PivotCache.Refresh
    Sheets("sheet1").PivotTables("PivotTable1").RefreshTable
    End Sub
    

    现在,ExternalDatapivotTables同时刷新。

答案 1 :(得分:0)

有可能当您打开工作簿时,您可以同时打开其他工作簿吗?仅使用宏工作簿尝试它。另外,使用数据透视表指定工作表也可以。 sheet1.refreshall

另一种方法是使用api设置计时器并指定要刷新的时间。

最后一种方法是在打开工作簿时设置刷新,转到此工作簿,然后在打开时输入代码。