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。

相关推荐
Navicat中国5 天前
使用 Navicat 轻松生成数据库测试数据
数据库·数据
V_156560272198 天前
2026年滁州市高新技术企业申报时间、条件、奖补
科技·数据
网络研究院17 天前
2026年上半年十大网络攻击和数据泄露事件
网络·安全·漏洞·风险·数据·泄露·事件
V_1565602721922 天前
陕南生态科创!2026年汉中市高新技术企业申报时间、条件、流程、区县奖补汇总
科技·数据
SL-staff1 个月前
研发项目与生产排程联动架构解析:JVS企业计划与APS的数据协同实践
大数据·架构·数据模型·api集成·jvs企业计划·jvs-aps·高级计划与排程
lh17931 个月前
数据产业服务分类(68)——数据产业服务交付——服务交付维度
数据
lh17931 个月前
数据产业服务分类(39)——分类设计过程与实现——分类设计过程
数据
lh17931 个月前
数据产业服务分类(49)——分类设计——数据咨询服务
数据
lh17931 个月前
数据产业服务分类(50)——分类设计——数据平台服务
数据
网络研究院1 个月前
Brave浏览器放大招引入容器功能,实现多账户安全隔离
网络·安全·容器·浏览器·数据·隐私