使用ODBC连接器的VBA/MySQL问题

使用ODBC连接器的VBA/MySQL问题,mysql,vba,excel,odbc,dsn,Mysql,Vba,Excel,Odbc,Dsn,我已经为此挣扎了几天了。非常感谢您的帮助 正在尝试使用Excel VBA在具有以下内容的PC上连接到MySQL数据库: Excel 2007 Windows 7 x64家庭高级版 MySQL 5.5 MySQL ODBC连接器5.1,64位 在Excel VBA中,我引用了Microsoft ActiveX Objects 2.8库 我用于连接的VBA是: Dim oConn As ADODB.Connection Public Sub ConnectDB() Set oConn = N

我已经为此挣扎了几天了。非常感谢您的帮助

正在尝试使用Excel VBA在具有以下内容的PC上连接到MySQL数据库:

Excel 2007 Windows 7 x64家庭高级版 MySQL 5.5 MySQL ODBC连接器5.1,64位

在Excel VBA中,我引用了Microsoft ActiveX Objects 2.8库

我用于连接的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连接器5.1是否存在并且正确:是的,当我尝试以这种方式创建DSN时,检查OK

通过查看VBA项目参考选项,我注意到可以参考大量不同ADO库的选项,包括(多维)选项和库版本2.0、2.1、2.5、2.6、2.7和6.0-答案可能在于其中一个


如需更多详细信息,请与我联系。

您需要使用32位或64位版本,具体取决于Excel的版本,而不是Windows。因此,即使您运行64位的Windows7,我相信Excel2007也只有32位,因此您需要使用32位的mysql连接器


另请参阅与您的问题类似的内容。

当我将应用程序移动到具有不同版本驱动程序的其他系统时,我收到了类似的消息-看起来拼写错误的驱动程序名称会导致相同的消息。要找到正确的驱动程序名称并使应用程序驱动程序版本独立,我使用以下代码:

    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

从未使用过64位,所以我不确定此链接是否对您有帮助,但请看一看是否有帮助?谢谢你为我工作。此外,由于MySQL ODBC 5.2,连接字符串有点不同: