Excel数据模型:通过VBA在现有连接上设置OLAP MaxDrillthroughRecords

时间:2019-04-08 23:06:12

标签: excel vba powerpivot

我正在使用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”:应用程序定义或对象定义的错误。

在“本地”窗口中仔细阅读连接对象将显示此内容,这说明了错误消息: OLEDBConnection isn't available

如何在现有工作表中以编程方式设置maxDrillthroughRecords属性。或者,或者,如何在应用程序默认值中或在创建连接时指定此属性的值?

谢谢

0 个答案:

没有答案