【问题标题】:Replace Value in Excel Connection string替换 Excel 连接字符串中的值
【发布时间】: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)。要将名称更改为当前机器的主机名还是要创建一个新对象?
  • 我想简单地将连接字符串中的计算机主机名的任何实例替换为当前正在使用的机器的实例,所以我不会更改计算机主机名本身,我只是更新连接使用当前字符串。
  • 尝试从最后一行删除SetString 不是对象。
  • 现在抛出错误下标超出范围引用行dbconnection = ActiveWorkbook.Connections("ConnectionName").OLEDBConnection.connection
  • 转到Data->Connections 并验证连接名称是否为ConnectionName

标签: excel vba connection-string


【解决方案1】:

事实证明,这是一个简单的连接名称错误案例。操作代码如下:

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 & "\")
    ActiveWorkbook.Connections("ConnectionName").OLEDBConnection.connection = dbconnection
End Sub

【讨论】:

    猜你喜欢
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多