我正在使用VBA以编程方式创建具有嵌入式数据透视表对象的excel工作簿。我当前的项目是将数据模型用作数据透视缓存源。
我需要能够深入研究除前1000条记录(返回的默认最大记录)之外的详细信息。Excel提供了重置此值的功能,最多可记录1,048,576条记录。但是,我看不到通过代码解决此问题的方法(我认为这是我的项目的要求-这些不一定是精通的最终用户。)
Excel公开OLEDBConnection.MaxDrillthroughRecords属性以控制此行为。但是,我无法设置此属性,因为与数据模型的连接似乎不允许我访问OLEDBconnection对象。
我尝试了Excel的宏记录器,以捕获通过UI进行设置时发生的更改。它生成以下代码:
Sub Macro1()
'
' Macro1 Macro
'
'
10: With ActiveWorkbook.Connections("ThisWorkbookDataModel").OLEDBConnection
.CommandText = Array("Model")
.CommandType = xlCmdCube
.Connection = "OLEDB;"
.RefreshOnFileOpen = False
.SavePassword = False
.SourceConnectionFile = ""
.MaxDrillthroughRecords = 1048576
.ServerCredentialsMethod = xlCredentialsMethodIntegrated
.AlwaysUseConnectionFile = False
.RetrieveInOfficeUILang = True
End With
With ActiveWorkbook.Connections("ThisWorkbookDataModel")
.Name = "ThisWorkbookDataModel"
.Description = "Data Model"
End With
End Sub
不幸的是,在与记录它的位置相同的工作簿中执行记录的宏,会在第一个 With 部分(标签'10')上生成运行时错误: “ 1004”:应用程序定义或对象定义的错误。
在“本地”窗口中仔细阅读连接对象将显示此内容,这说明了错误消息:
如何在现有工作表中以编程方式设置maxDrillthroughRecords属性。或者,或者,如何在应用程序默认值中或在创建连接时指定此属性的值?
谢谢