2012-11-26 12 views
10
Dim oConn As ADODB.Connection 
Private Sub ConnectDB() 
Set oConn = New ADODB.Connection 
Dim str As String 
str = "DRIVER={MySQL ODBC 5.2.2 Driver};" & _ 
              "SERVER=sql100.xtreemhost.com;" & _ 
              "PORT=3306" & _ 
              "DATABASE=xth_9595110_MyNotes;" & _ 
              "UID=xth_9595110;" & _ 
              "PWD=myPassword;" & _ 
              "Option=3" 
''' error ''' 
oConn.Open str 
End Sub 

Private Sub InsertData() 
Dim rs As ADODB.Recordset 
Set rs = New ADODB.Recordset 
ConnectDB 
sql = "SELECT * FROM ComputingNotesTable" 
rs.Open sql, oConn, adOpenDynamic, adLockOptimistic 
Do Until rs.EOF 
    Range("A1").Select 
    ActiveCell = rs.Fields("Headings") 
    rs.MoveNext 
Loop 
rs.Close 
oConn.Close 
Set oConn = Nothing 
Set rs = Nothing 
End Sub 

Robi się podobne rzeczy w PHP, mogę z powodzeniem zalogować się do serwera MySQL. Zainstalowałem złącze ODBC. Ale w powyższych kodach VBA, nie udało mi się. Pojawia się błąd. (Patrz kody gdzie występuje błąd)W jaki sposób VBA może łączyć się z bazą danych MySQL w Excelu?

$connect = mysql_connect("sql100.xtreemhost.com","xth_9595110","myPassword") or die(mysql_error()); 

mysql_select_db("myTable",$connect); 

Odpowiedz

4

kod Ranjit spowodował ten sam komunikat o błędzie, jak donosi Tin , ale pracował po aktualizacji Cn.open za pomocą sterownika ODBC, który mam uruchomiony. Sprawdź kartę Sterowniki w Administratorze źródeł danych ODBC. Mine powiedział "Sterownik Unicode MySQL ODBC 5.3", więc odpowiednio zaktualizowałem.

+1

Dziękuję bardzo naprawdę do testowania kodów opublikowanych dawno temu !!! –

8

Ten kawałek vba pracował dla mnie:

Sub connect() 
    Dim Password As String 
    Dim SQLStr As String 
    'OMIT Dim Cn statement 
    Dim Server_Name As String 
    Dim User_ID As String 
    Dim Database_Name As String 
    'OMIT Dim rs statement 

    Set rs = CreateObject("ADODB.Recordset") 'EBGen-Daily 
    Server_Name = Range("b2").Value 
    Database_name = Range("b3").Value ' Name of database 
    User_ID = Range("b4").Value 'id user or username 
    Password = Range("b5").Value 'Password 

    SQLStr = "SELECT * FROM ComputingNotesTable" 

    Set Cn = CreateObject("ADODB.Connection") 'NEW STATEMENT 
    Cn.Open "Driver={MySQL ODBC 5.2.2 Driver};Server=" & _ 
      Server_Name & ";Database=" & Database_Name & _ 
      ";Uid=" & User_ID & ";Pwd=" & Password & ";" 

    rs.Open SQLStr, Cn, adOpenStatic 

    Dim myArray() 

    myArray = rs.GetRows() 

    kolumner = UBound(myArray, 1) 
    rader = UBound(myArray, 2) 

    For K = 0 To kolumner ' Using For loop data are displayed 
     Range("a5").Offset(0, K).Value = rs.Fields(K).Name 
     For R = 0 To rader 
      Range("A5").Offset(R + 1, K).Value = myArray(K, R) 
     Next 
    Next 

    rs.Close 
    Set rs = Nothing 
    Cn.Close 
    Set Cn = Nothing 
End Sub 
+0

Dziękujemy za kody. Ale utknąłem w którym nie wiem, co powinien być serwer. Używam MySQL Xtreemhost i używam "sql100.xtreemhost.com". Wsparcie Xtreemhost mówi, że jest to nazwa serwera. Więc co powinienem zrobić? –

+0

Czy próbowałeś umieścić nazwę swojego serwera w komórce b2 swojego arkusza Excela? –

+0

Tak, zrobiłem, podobno nazwa serwera to "sql100.xtreemhost.com", ale dla sterownika napisałem kody: "Driver = {MySQL ODBC 5.1.11 Driver}", zgodnie z wersją na moim maszyna. Utknąłem w "Cn.Open" i błąd jest taki sam: "Błąd czasu wykonania -2147467259 (80004005) Błąd automatyzacji Nieokreślony błąd" –

1

Włącz Microsoft ActiveX Data Objects 2.8 Library

Dim oConn As ADODB.Connection 
Private Sub ConnectDB()  
Set oConn = New ADODB.Connection  
oConn.Open "DRIVER={MySQL ODBC 5.1 Driver};" & _   
"SERVER=localhost;" & _   
"DATABASE=yourdatabase;" & _   
"USER=yourdbusername;" & _  
"PASSWORD=yourdbpassword;" & _  
"Option=3" 
End Sub 

Nie Reszta jest tutaj: http://www.heritage-tech.net/908/inserting-data-into-mysql-from-excel-using-vba/

+1

Włączono bibliotekę obiektów danych. I zastanawiam się, czy SERVER = localhost, w jaki sposób aplikacja może wiedzieć, mój serwer SQL jest na Xtreemhost SQL? nadal mam ten sam błąd: „błąd czasu -2147467259 (80004005) Błąd Automatyka Nieokreślony błąd” –

+0

to próbowałem, ale błąd: „nazwa źródła danych nie znaleziono i nie domyślnego sterownika podano” – hammythepig

4

Tylko uwaga strona dla każdego, który natyka się na tym samym zapytania ... mój system operacyjny jest 64 bit - więc oczywiście Pobrałem 64 bitowy sterownik MySQL ... jednak moje aplikacje biurowe są 32-bitowe ... Po pobraniu 32-bitowej wersji błąd zniknął i mogłem iść do przodu.

+1

Jaki sterownik? I skąd to pobierzesz?Przykro mi, ale jestem nowy, próbując osiągnąć doskonałość w rozmowie z MySQL. Mam tę samą konfigurację, z maszyną 64-bitową i 32-bitowym pakietem Office, więc podejrzewam, że mój problem może być podobny do twojego. – lukehawk

Powiązane problemy