【发布时间】:2013-09-16 21:55:53
【问题描述】:
我需要更新 Excel 工作簿的 sql 连接的连接名称。这是我的尝试。我已经能够通过标准替换来修改连接字符串和命令文本。
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
任何帮助都会很棒。谢谢。
【问题讨论】:
-
到底是什么问题?你有错误吗?如果是,在哪一行以及确切的信息是什么?
-
此代码将正常运行,但连接字符串的名称不会更改。似乎发生的是第 i 个连接名称更改为集合中的另一个名称。因此,如果我在尝试重命名代码后在connections.items(i) = Connection10 之前检查它的connections.items(i) = Connection7。看来我需要另一种方法来重命名。目前此代码只是重新排序连接名称。
-
尝试将连接对象放入一个集合中,然后循环访问该集合。有时像您正在做的那样在循环中修改对象可能会导致对象在此过程中重新排序。或者尝试设置对每个连接的引用并使用该引用而不是引用 .Items(i)
标签: excel vba external oledbconnection