我几天来一直在努力解决这个问题。任何帮助非常感谢。
尝试使用Excel VBA在具有以下内容的PC上连接到MySQL数据库:
Excel 2007 Windows 7 x64家庭高级版 MySQL 5.5 MySQL ODBC Connector 5.1,64位
在Excel VBA中,我引用了Microsoft ActiveX Objects 2.8 Library。
我用来连接的VBA是:
Dim oConn As ADODB.Connection
Public Sub ConnectDB()
Set oConn = New ADODB.Connection
oConn.Open "DRIVER={MySQL ODBC 5.1 Driver};" & "SERVER=localhost;" & "DATABASE=test;" & "USER=root;" & "PASSWORD=PWhere;" & "Option=3"
End Sub
每次运行时都会出现错误对话框:“[Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序”
MySQL服务肯定在运行。
我使用Windows数据源管理器来检查MySQL ODBC Connector 5.1是否存在并且正确:当我尝试以这种方式创建DSN时,检查确定。
通过VBA项目参考选项,我注意到引用大量不同ADO库的选项,包括(多维)选项和库版本2.0,2.1,2.5,2.6,2.7和6.0 - 也许是答案在于其中一个吗?
需要更多详细信息,请告知我们。
答案 0 :(得分:4)
您需要使用32位或64位版本,具体取决于 Excel 的版本,而不是Windows。所以即使你运行Windows 7 64位,我相信Excel 2007只有32位,所以你需要使用32位mysql连接器。
另请参阅与您的问题类似的此bug report。
答案 1 :(得分:4)
当我将我的应用程序移动到具有不同版本驱动程序的其他系统时,我得到了类似的消息 - 它看起来像拼错的驱动程序名称导致相同的消息。要查找正确的驱动程序名称并使应用程序驱动程序版本独立,请使用以下代码:
Public Function Get_Driver() As String
Const HKEY_LOCAL_MACHINE = &H80000002
Dim l_Registry As Object
Dim l_RegStr As Variant
Dim l_RegArr As Variant
Dim l_RegValue As Variant
Get_Driver = ""
Set l_Registry = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
l_Registry.enumvalues HKEY_LOCAL_MACHINE, "SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers", l_RegStr, l_RegArr
For Each l_RegValue In l_RegStr
If InStr(1, l_RegValue, "MySQL ODBC", vbTextCompare) > 0 Then
Get_Driver = l_RegValue
Exit For
End If
Next
Set l_Registry = Nothing
End Function