基于编程生成的logging集的数据透视表缺less刷新button

Excel 2016。

我有我在透视表中分析的内存数据通过将透视caching设置为以编程方式创build的logging集。 这很好用! 唯一缺less的是右键点击数据透视表时通常在上下文菜单中获得的刷新选项是灰显的。 除了这个小麻烦之外,Pivot表的所有function都在那里。

今天,我通过向我的Excel加载项的自定义菜单中添加“刷新数据透视表”命令来解决刷新问题。 它有效,但我不认为这是正确的做法。 刷新数据透视表应通过上下文菜单中的常规“刷新”命令完成。

我的问题是:1)如何在使用编程生成的logging集时启用数据透视表的上下文菜单刷新命令? 2)如何捕获由于select刷新命令而导致的刷新事件?

给你更多的细节:

logging集由类似于此的代码(为了方便而缩短)

Public Function GetAllDataAsRecordSet() As Recordset Dim record As CSummaryDatabaseRecord Dim rst As Recordset 'Create the recordset Set rst = New Recordset 'Prepare fields With rst.fields .Append "Type", adVarChar, 25 .Append "Project Number", adInteger 'More fields here in the real application End With 'Open the recordset for data insertion rst.Open 'Get the data as a collection and create one record for each item in the collection For Each record In GetAllData() rst.AddNew With record rst.fields("Type") = .tag rst.fields("Project Number") = .ProjectNumber 'More data here in the real application End With Next 'record Set GetAllDataAsRecordSet = rst End Function 

数据透视表caching被下面的代码更新和刷新,该代码调用上面的类方法

 Set pivot.PivotCache.Recordset = allocationDB.GetAllDataAsRecordSet pivot.PivotCache.Refresh 

其中variables“pivot”引用了所讨论的Pivot表。

Pivotcaching和Pivot表最初是使用下面的代码创build的,但是一旦就位,根据上面的代码片段只更新caching的logging集。

 Set mainCache = ActiveWorkbook.PivotCaches.Create(xlExternal) Set mainCache.Recordset = allocationDB.GetAllDataAsRecordSet mainCache.CreatePivotTable Range("A4"), "MainPivot" 

总而言之,除了令人讨厌的数据透视表上下文菜单“刷新”选项变灰之外,其效果很好。

任何帮助,高度赞赏。

佩雷