【发布时间】:2015-08-04 08:01:24
【问题描述】:
谁能推荐一个 VBA 程序来替换 Excel SQl Server OLEDB 连接字符串的元素?
我尝试过使用下面的代码,但我认为这与dbconnection 变量的数据类型有关。
Sub ModifyConnection()
Dim ComHostname As String
ComHostname = Environ$("computername")
Call MsgBox(ComHostname)
Dim dbconnection As String
dbconnection = ActiveWorkbook.Connections("ConnectionName").OLEDBConnection.connection
dbconnection = Replace(dbconnection, "___BTN_____\", ComHostname & "\")
Set ActiveWorkbook.Connections("ConnectionName").OLEDBConnection.connection = dbconnection
End Sub
代码试图将连接字符串中的计算机主机名实例替换为当前机器的实例。
它抛出错误 424 - 需要对象。
【问题讨论】:
-
dbconnection = ActiveWorkbook.Connections("...不是字符串,它会将“dbconnection”设置为工作簿对象,但您必须使用set dbconnection As Active.Workbook..(末尾没有.connection)。要将名称更改为当前机器的主机名还是要创建一个新对象? -
我想简单地将连接字符串中的计算机主机名的任何实例替换为当前正在使用的机器的实例,所以我不会更改计算机主机名本身,我只是更新连接使用当前字符串。
-
尝试从最后一行删除
Set。String不是对象。 -
现在抛出错误下标超出范围引用行
dbconnection = ActiveWorkbook.Connections("ConnectionName").OLEDBConnection.connection -
转到
Data->Connections并验证连接名称是否为ConnectionName
标签: excel vba connection-string