4

私はこれに数日間苦労しています。どんな助けでも大歓迎です。

次のPCでExcelVBAを使用してMySQLデータベースに接続しようとしています。

Excel 2007 Windows 7 x64 Home Premium MySQL 5.5 MySQL ODBCコネクタ5.1、64ビット

Excel VBAで、Microsoft ActiveXObjects2.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 Driver Manager]データソース名が見つからず、デフォルトのドライバーが指定されていません」というエラーダイアログが表示されます。

MySQLサービスは確実に実行されています。

Windowsデータソースアドミニストレータを使用して、MySQL ODBCコネクタ5.1が存在し、正しいことを確認しました。この方法でDSNを作成しようとすると、OKがチェックアウトされます。

VBAプロジェクトの参照オプションを見ると、(多次元)オプションやライブラリバージョン2.0、2.1、2.5、2.6、2.7、6.0など、さまざまなADOライブラリのホスト全体を参照するオプションがあります。答えは次のとおりです。これらの1つ?

詳細が必要な場合はお知らせください。

4

2 に答える 2

4

Windowsではなく、 Excelのバージョンに応じて、32ビットバージョンまたは64ビットバージョンのいずれかを使用する必要があります。したがって、Windows 7 64ビットを実行している場合でも、Excel 2007は32ビットでしか提供されないため、32ビットのmysqlコネクタを使用する必要があります。

問題に類似しているこのバグレポートも参照してください。

于 2012-03-22T09:05:52.283 に答える
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
于 2012-09-29T08:08:12.063 に答える