使用VBA快速创建动态数据连接

使用Workbooks(...).Connections.Add2方法可以快速创建数据连接,但是由于数据源的范围通常并不是固定不变的,因此需要使用代码动态获取数据范围,并为Add2传递相关参数,下面的自定义过程可以轻松实现创建数据连接的任务。

示例代码如下:

Sub CreateDataConn(sConName As String, sWKName As String, sShtName As String)
    With Workbooks(sWKName)
        Dim sRef As String
        sRef = .Sheets(sShtName).Range("A1").CurrentRegion.Address(False, False, , True)
        .Connections.Add2 Name:=sConName, Description:="", _
            ConnectionString:="WORKSHEET;" & Split(sRef, "!")(0), _
            CommandText:=Split(sRef, "]")(1), _
            lcmdtype:=XlCmdType.xlCmdExcel, _
            createmodelconnection:=True, importrelationships:=False
    End With
End Sub

【代码解析】
自定义过程CreateDataConn共有三个参数:

  • sConName:数据连接名称
  • sWKName:工作簿名称
  • sShtName:工作表名称

第4行代码获取指定工作表中的数据区域引用,其中前两个参数指定为False,则行引用和列引用都是相对引用形式,第4个参数设置为True,指定使用外部引用形式。

例如:工作簿Data.xlsx中工作表2025Q3中数据区域为A1:S500,那么sRef的值为[Data.xlsx]2025Q3!A1:S500

第6行代码中Split(sRef, "!")(0)提取工作簿和工作表名称,即[Data.xlsx]2025Q3
第7行代码中Split(sRef, "]")(1)提取数据区域的引用地址(包含工作表名称),即2025Q3!A1:S500
第5-9行代码调用Add2方法创建数据连接。

调用自定义过程的示例代码如下。

Call CreateDataConn("SalesData", "Data.xlsx", "2025Q3") 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值