在VBA中修改现有的Excel连接名称

我需要更新Excel工作簿的sql连接的连接名称。 这是我的尝试。 我已经能够通过执行标准的replace修改连接string和命令文本。

Sub ConnectionString_modify() Dim i As Long Dim cnt As Long Dim modtext As String Dim modrange As String 'Grab nummber of workbook connections cnt = ActiveWorkbook.Connections.Count For i = 1 To cnt 'Changes to Connection string --This works modtext = ActiveWorkbook.Connections.Item(i).OLEDBConnection.Connection modtext = VBA.Replace(modtext, "_FY2013", "_FY2014") ActiveWorkbook.Connections.Item(i).OLEDBConnection.Connection = modtext 'Changes Connection Name modname = ActiveWorkbook.Connections.Item(i).Name modname = VBA.Replace(modname, "_FY2013", "_FY2014") ActiveWorkbook.Connections.Item(i).Name = modname Next i End sub 

任何帮助将是伟大的。 谢谢。

尝试这个:

 Sub ConnectionString_modify() Dim i As Long Dim cnt As Long Dim modtext As String Dim modrange As String Dim conn 'Grab nummber of workbook connections cnt = ActiveWorkbook.Connections.Count For i = cnt To 1 Step -1 Set conn = ActiveWorkbook.Connections.Item(i) modtext = conn.OLEDBConnection.Connection modtext = VBA.Replace(modtext, "_FY2013", "_FY2014") conn.OLEDBConnection.Connection = modtext conn.Name = VBA.Replace(conn.Name, "_FY2013", "_FY2014") Next i End sub 

显然,Exceldynamic地sortingConnection.Item()数组。 所以我的修改是发送更新的名称到arrays的底部。 之前:2013年度1,2013年度2,2013年度3,2013年度4之后:2014年度2,2014年度3,2014年度2014年度4,2014年度1

这很难看,因为我正在处理50多个连接。 我发现有效的是,而不是试图遍历整个集合,只修改数组中的第一个项目。

 'Connection Count cnt = ActiveWorkbook.Connections.Count While cnt > 0 'Always modify the first Item Set conn = ActiveWorkbook.Connections.Item(1) 'Mod code makes changes to Command Text modtext = conn.OLEDBConnection.Connection modtext = VBA.Replace(modtext, "_FY2013", "_FY2014") conn.OLEDBConnection.Connection = modtext 'Changes Connection Name conn.Name = VBA.Replace(conn.Name, "_FY2013", "_FY2014") 'Iterate through the cnt cnt = cnt - 1 Wend 

感谢大家的帮助。