3

背景:我有 2 张 excel 表:

  1. 包含数据透视表和宏“刷新”
  2. 来自 SQL 服务器的数据

宏包含用于自动刷新数据和更新数据透视表的VBA 代码。数据每晚更新。以下是VBA 代码:

 Sub Refresh()
 ActiveWorkBook.RefreshAll 
 End Sub

问题:

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

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

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

任何帮助是极大的赞赏。

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

4

2 回答 2

1

我已经解决了我的问题:

  1. 我删除了宏并使用了Active-x-Control按钮。所以,在button_click()刷新ExternalData以及pivotTables

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

    ActiveWorkBook.RefreshAll

并更新为

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

所以现在两者都ExternalData同时pivotTables得到刷新。

于 2013-04-25T20:31:28.893 回答
0

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

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

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

于 2013-04-22T17:44:47.270 回答