VBA가 엑셀에서 MySQL 데이터베이스에 어떻게 연결할 수 있습니까?
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
PHP에서 유사한 작업을 수행하면서 MySQL 서버에 성공적으로 로그인할 수 있었습니다.ODBC 커넥터를 설치했습니다.하지만 위의 VBA 코드에서 저는 실패했습니다.오류가 나타납니다. (오류가 존재하는 코드 참조)
$connect = mysql_connect("sql100.xtreemhost.com","xth_9595110","myPassword") or die(mysql_error());
mysql_select_db("myTable",$connect);
이 vba 조각은 저에게 효과가 있었습니다.
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
Ranjit의 코드는 Tin이 보고한 것과 동일한 오류 메시지를 발생시켰지만, 내가 실행 중인 ODBC 드라이버로 Cn.open을 업데이트한 후 작동했습니다.ODBC 데이터 소스 관리자에서 드라이버 탭을 확인합니다.내 것은 "MySQL ODBC 5.3 Unicode Driver"라고 되어 있어서 업데이트를 했습니다.
같은 질문에 넘어간 사람들을 위한 참고 사항일 뿐입니다내 운영 체제는 64비트입니다. 그래서 당연히 64비트 MySQL 드라이버를 다운로드했습니다.하지만, 제 오피스 애플리케이션은 32비트입니다.32비트 버전을 다운로드하면 오류가 사라지고 앞으로 나아갈 수 있었습니다.
MySQL Connector/ODBC 버전 8.0에서 사용할 수 있었던 솔루션을 최신 답변으로 이 항목을 업데이트합니다(https://downloads.mysql.com/archives/c-odbc/) 참조).
Public oConn As ADODB.Connection
Sub MySqlInit()
If oConn Is Nothing Then
Dim str As String
str = "Driver={MySQL ODBC 8.0 Unicode Driver};SERVER=xxxxx;DATABASE=xxxxx;PORT=3306;UID=xxxxx;PWD=xxxxx;"
Set oConn = New ADODB.Connection
oConn.Open str
End If
End Sub
이 문제에 대해 가장 중요한 것은 HKEY_LOCAL_MACHINT\SOFTWARE\ODBC\ODBCINST에서 설치된 드라이버의 올바른 이름과 버전을 확인하는 것입니다.INI\ODBC 드라이버\
Microsoft ActiveX 데이터 개체 2.8 라이브러리 사용
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
나머지는 다음과 같습니다. http://www.heritage-tech.net/908/inserting-data-into-mysql-from-excel-using-vba/
이것을 추가로 업데이트하기 위해서입니다.
영원히 걸리는 모든 행과 열을 반복하는 대신.사용해 보다
`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 = "Server_Name "
Database_Name = "Database_Name" ' Name of database
User_ID = "User_ID" 'id user or username
Password = "Password" 'Password
SQLStr = "SELECT * FROM item"
Set Cn = CreateObject("ADODB.Connection") 'NEW STATEMENT
Cn.Open "Driver={MySQL ODBC 8.0 ANSI Driver};Server=" & _
Server_Name & ";Database=" & Database_Name & _
";Uid=" & User_ID & ";Pwd=" & Password & ";"
rs.Open SQLStr, Cn, adOpenStatic
Range("A2").CopyFromRecordset rs
rs.Close
Set rs = Nothing
Cn.Close
Set Cn = Nothing
End Sub
이것은 몇 분 더 빠릅니다.
언급URL : https://stackoverflow.com/questions/13558921/how-can-vba-connect-to-mysql-database-in-excel
'programing' 카테고리의 다른 글
Django 모델 생성 또는 업데이트(있는 경우) (0) | 2023.06.10 |
---|---|
Python 요청이 자체 서명된 SSL 인증서를 신뢰하도록 하는 방법은 무엇입니까? (0) | 2023.06.10 |
쉼표로 구분된 문자열을 입력할 수 있습니까? (0) | 2023.06.10 |
Excel Interop - 범위의 모든 테두리 그리기 (0) | 2023.06.10 |
시트의 행 수 (0) | 2023.06.10 |