VBA-如何从连接中清除连接字符串

时间:2018-10-31 22:09:34

标签: excel vba excel-vba connection oledb

我有一个函数试图从每个连接中清除每个连接字符串,它的工作方式如下:

Public Sub RemovePasswordByNamePrefix()
    Dim w As Worksheet
    Dim qt As QueryTable
    Dim cn As Object
    Dim odbcCn As ODBCConnection
    Dim oledbCn As OLEDBConnection

    For Each cn In ThisWorkbook.connections
        If cn.Type = xlConnectionTypeODBC Then
            Set odbcCn = cn.ODBCConnection
            odbcCn.SavePassword = False

            odbcCn.connection = ""
            odbcCn.CommandText = ""

        ElseIf cn.Type = xlConnectionTypeOLEDB Then

            Set oledbCn = cn.OLEDBConnection
            oledbCn.SavePassword = False

            oledbCn.connection = ""
            oledbCn.CommandText = ""

        End If
    Next
End Sub

问题在于此操作失败,并出现以下错误(在OLEDB部分中,连接=“”):

  

运行时错误'1004'

     

应用程序定义或对象定义的错误

尝试通过界面执行此操作也不起作用,这有点时髦:

enter image description here

当您单击“确定”按钮时,它什么也没做...就像窗口没有关闭,没有更改一样,这很奇怪。实际上,除非您在命令文本和命令字符串部分中放置某些内容(有效或无效),否则这种相同行为将持续存在。

为什么会这样?有办法解决吗?就像MS将此作为“隐藏”要求,并且在用户/开发人员尝试绕过它时没有记录或提供反馈。

我将收到的一个显而易见的问题是,为什么要这样做,我将打开另一张纸条以解决该问题,并添加一个link here

1 个答案:

答案 0 :(得分:0)

尝试代替;删除连接并在以后需要时重新创建。

Public Sub RemovePasswordByNamePrefix()
    Dim w As Worksheet
    Dim qt As QueryTable
    Dim cn As Object
    Dim odbcCn As ODBCConnection
    Dim oledbCn As OLEDBConnection

    For Each cn In ThisWorkbook.Connections
        If cn.Type = xlConnectionTypeODBC Then
            cn.Delete
        ElseIf cn.Type = xlConnectionTypeOLEDB Then
            cn.Delete
        End If
    Next
End Sub