Я нашел несколько вопросов, связанных с этим, с помощью vba для обновления подключений к данным Excel, и они прекрасно работают для подключений ODBC / OLEDB.
У меня есть электронная таблица, которая как соединение «Запрос к базе данных» и код для OLEDB / ODBC не работает, и я получаю ошибку во время выполнения 1004.
Когда я запускаю VBA, чтобы проверить, какой это тип соединения, это тип 2.
Sub test()
Dim conn As WorkbookConnection
For Each conn In ActiveWorkbook.Connections
Debug.Print conn.Name
Dim connName As String
connName = conn.Name
Debug.Print conn.Type
Next conn
End Sub
Использование кода в VBA
Sub RelaceSQLDriver()
Dim conn As WorkbookConnection
For Each conn In ActiveWorkbook.Connections
Debug.Print conn.Name
Dim connName As String
connName = conn.Name
Dim oleconn As OLEDBConnection
Set oleconn = conn.OLEDBConnection
'Debug.Print oleconn.Connection
Dim oleconntext As String
oleconntext = oleconn.Connection
oleconntext = Replace(oleconntext, "Provider=SQLOLEDB.1;", "Provider=MSOLEDBSQL.1;")
Debug.Print oleconntext
oleconn.Connection = oleconntext
Next conn
End Sub
В моем примере кода я установил его как OLEDBConnection, который отлично работает для фактических соединений OLE, но не для соединений с данными из запроса к базе данных.