2012-11-26 41 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 

Làm những điều tương tự trong PHP, tôi có thể đăng nhập thành công vào máy chủ MySQL. Tôi đã cài đặt đầu nối ODBC. Nhưng trong các mã VBA ở trên, tôi đã thất bại. Lỗi xảy ra. (Xem các mã lỗi ở đâu tồn tại)Làm thế nào để VBA có thể kết nối với cơ sở dữ liệu MySQL trong Excel?

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

mysql_select_db("myTable",$connect); 

Trả lời

4

đang Ranjit đã gây được thông báo lỗi tương tự như báo cáo của Tín , nhưng đã làm việc sau khi cập nhật Cn.open với trình điều khiển ODBC mà tôi đang chạy. Kiểm tra tab Trình điều khiển trong Quản trị viên nguồn dữ liệu ODBC. Tôi nói "MySQL ODBC 5.3 Unicode Driver" vì vậy tôi cập nhật cho phù hợp.

+1

Cảm ơn bạn rất nhiều thực sự để kiểm tra các mã được đăng từ lâu rồi !!! –

8

Đoạn VBA làm việc cho tôi:

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

Cảm ơn mã của bạn. Nhưng tôi đã bị mắc kẹt trong đó tôi không biết những gì các máy chủ nên được. Tôi đang sử dụng MySQL của Xtreemhost và tôi đã sử dụng "sql100.xtreemhost.com". Xtreemhost Support cho biết đây là tên cho máy chủ. Tôi nên làm cái gì sau đó? –

+0

bạn đã thử đặt tên máy chủ của mình vào ô b2 của bảng excel chưa? –

+0

Vâng, tôi đã làm, được cho là có tên máy chủ là "sql100.xtreemhost.com" nhưng đối với người lái xe, tôi đã viết các mã như thế này: "Driver = {MySQL ODBC 5.1.11 driver}", theo phiên bản trên của tôi máy móc. Tôi đã bị mắc kẹt trong "Cn.Open" và lỗi là như nhau: "Run-time error -2147467259 (80004005) lỗi Automation lỗi Unspecified" –

1

Enable 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 

Có còn lại là ở đây: http://www.heritage-tech.net/908/inserting-data-into-mysql-from-excel-using-vba/

+1

Đã bật Thư viện đối tượng dữ liệu. Và tôi tự hỏi nếu SERVER = localhost, làm thế nào ứng dụng có thể biết máy chủ SQL của tôi là trên xtreemhost SQL? Vẫn còn lỗi tương tự: "Lỗi thời gian chạy -2147467259 (80004005) Lỗi tự động hóa Lỗi không xác định" –

+0

Tôi đã thử lỗi này: "Không tìm thấy tên nguồn dữ liệu và không có trình điều khiển mặc định" – hammythepig

4

Chỉ cần một mặt lưu ý cho bất cứ ai tình cờ vào cuộc điều tra này cùng ... Hệ điều hành của tôi là 64 bit - vì vậy tất nhiên tôi đã tải về trình điều khiển MySQL 64 bit ... Tuy nhiên, các ứng dụng văn phòng của tôi là 32 bit ... Khi tôi tải xuống phiên bản 32 bit, lỗi đã biến mất và tôi có thể tiến lên phía trước.

+1

Trình điều khiển nào? Và bạn đã tải xuống từ đâu?Tôi xin lỗi, nhưng tôi mới để cố gắng để có được excel để nói chuyện với MySQL. Tôi có cùng một thiết lập, với một máy 64bit và 32bit Office, vì vậy tôi nghi ngờ vấn đề của tôi có thể tương tự như của bạn. – lukehawk

Các vấn đề liên quan