В Windows 64-битных системах 32-битные версии DLL находятся в папке "C: \ Windows \ SysWOW64" . По умолчанию SQLConfigDataSource
загружается из папки "C: \ Windows \ System32" , которая содержит 64-разрядные библиотеки DLL, что вызывает ошибку функции.
Я знаю, что это именование папок кажется задом наперед, но оно действительно так, как оно задумано, и это объясняет, почему это так.
Объявите функцию следующим образом и попробуйте:
Private Declare Function SQLConfigDataSource _
Lib "C:\Windows\SysWOW64\ODBCCP32.DLL" (ByVal hwndParent As Integer, _
ByVal fRequest As Integer, _
ByVal lpszDriver As String, _
ByVal lpszAttributes As String) As Integer