我有一个函数试图从每个连接中清除每个连接字符串,它的工作方式如下:
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'
应用程序定义或对象定义的错误
尝试通过界面执行此操作也不起作用,这有点时髦:
当您单击“确定”按钮时,它什么也没做...就像窗口没有关闭,没有更改一样,这很奇怪。实际上,除非您在命令文本和命令字符串部分中放置某些内容(有效或无效),否则这种相同行为将持续存在。
为什么会这样?有办法解决吗?就像MS将此作为“隐藏”要求,并且在用户/开发人员尝试绕过它时没有记录或提供反馈。
我将收到的一个显而易见的问题是,为什么要这样做,我将打开另一张纸条以解决该问题,并添加一个link here >
答案 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