VBA快速创建Excel中数据模型的数据连接

相较于普通的数据透视表,PowerPivot具备如下优势:

  • 处理海量数据
  • 使用多表关系建模
  • 支持强大的DAX公式
  • 性能优化
  • 支持更多统计方式,例如:排重计数(Distnct Count)

如果PowerPivot是基于Excel数据模型的,那么将需要使用VBA创建数据连接,并添加到数据模型中,但是这个过程并不像创建普通数据透视表的数据连接那么简单,需要一些小技巧。

示例文件中的数据表如下图所示。

示例代码如下。

vb 复制代码
Sub CreateConn(ByVal sConName As String, _
                ByVal Wb As String, _
                ByVal Sht As String)
    Dim sRef As String
    sRef = Workbooks(Wb).Sheets(Sht).Range("a1").CurrentRegion.Address(False, False, , True)
    Debug.Print sRef
    Workbooks(Wb).Connections.Add2 Name:=sConName, Description:="", _
        ConnectionString:="WORKSHEET;" & Split(sRef, "!")(0), _
        CommandText:=Split(sRef, "]")(1), _
        lcmdtype:=XlCmdType.xlCmdExcel, _
        createmodelconnection:=True, importrelationships:=False
End Sub

【代码解析】

第1~3行代码声明Sub过程,其中3个参数为

  • sConName为数据连接的名称
  • Wb为工作簿名称
  • Sht为工作表名称

第5行代码获取工作表中数据表的引用地址,其参数含义

  • 第1个参数RowAbsolute,设置为False,指定行引用不使用绝对引用
  • 第2个参数ColumnAbsolute,设置为False,指定列引用不使用绝对引用
  • 第4个参数External,设置为True,即使用外部引用格式
    在本示例中其返回值为[Book1.xlsm]Sheet1!A1:C4

第7~11行代码用于创建数据连接,其他参数为

  • 参数Name用于指定数据连接的名称
  • 参数ConnectionString用于指定连接字符串,参数值为WORKSHEET;[Book1.xlsm]Sheet1
  • 参数CommandText用于指定命令字符串,参数值为Sheet1!A1:C4
  • 参数lcmdtype用于指定连接类型,参数值为XlCmdType.xlCmdExcel常量。

如下代码将调用CreateConn创建数据连接并添加到数据模型中。

vb 复制代码
Sub Demo()
    Call CreateConn("DemoConn", ThisWorkbook.Name, "Sheet1")
End Sub

运行后的结果如下图所示,后续可以创建基于数据模型的PowerPivot。

相关推荐
华硕之声6 天前
苏式废土美学游戏
网络·数据·华硕
华硕之声7 天前
试着像猫一样生活
网络·数据·华硕
华硕之声13 天前
9 招筑牢数据安全防线~
网络·数据·华硕
龙石数据16 天前
【第三部分 实施篇】第7章 数据仓库及数据模型管理
数据仓库·数据管理·数据中台·数据模型·数据治理实战指南
海棠AI实验室20 天前
第二章 从脚本到工程:进阶学习的 5 个方法论(可维护性/可复现/可评估/可扩展/可交付)
python·数据
闲人编程21 天前
商品管理与库存系统
服务器·网络·数据库·python·api·数据模型·codecapsule
wyz19124 天前
第18章 数据治理项目实施成功的关键因素
大数据·数据治理·数据·数据要素·数据资产·数据资源
Anakki1 个月前
亚马逊竞品数据获取:2025年成熟方案与数据架构深度研究报告
数据·亚马逊·分析·竞品
xixixi777771 个月前
进一步了解一下现代数字经济的核心动脉——DCI(数据中心互联 )
网络·数据库·安全·光通信·数据·通信·dci
陈橘又青1 个月前
vLLM-Ascend推理部署与性能调优深度实战指南:架构解析、环境搭建与核心配置
人工智能·后端·ai·架构·restful·数据·vllm