728x90

MySQL 데이터 엑셀로 가져오기


MySQL 데이터를 엑셀로 가져오는 VBA 코드입니다.

코드는 구글링해서 찾은 여러자료를 분석해서 알기 쉽게 다시 정리 했습니다.


Sub GetMysSQLData()
    Dim DBConn As ADODB.Connection
    Dim RS As ADODB.Recordset
    Dim sSQL As String
    Dim dbConnStr As String
    Dim i As Long, dbRow As Long

    Dim DB_host As Variant
    Dim DB_User As Variant
    Dim DB_pass As Variant
    Dim DB_Name As Variant
    
    Application.ScreenUpdating = False  '// 화면 업데이트 정지

    Set shtName = Worksheets("DB_Setting")   '// DB_Setting Sheet 에서 설정한 값을 가져온다
    Set DB_host = shtName.Range("A2")     '// IP  설정 값. 호스팅업체에서 알려준 접속 host URL
    Set DB_port = shtName.Range("B2")   '// PORT  설정 값. MySQL Port 는 3306 포트가 default
    Set DB_User = shtName.Range("C2")   '// User ID 설정 값
    Set DB_pass = shtName.Range("D2")   '// PASSWord  설정 값
    Set DB_Name = shtName.Range("E2")   '// DB명  설정 값

    Set DBConn = New ADODB.Connection
    dbConnStr = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=" & DB_host & ";PORT=" & DB_port & ";DATABASE=" & DB_Name & ";USER=" & DB_User & ";PASSWORD=" & DB_pass & ";OPTION=3;"

    DBConn.Open dbConnStr   '// Open MySQL DB connection
    Set RS = New ADODB.Recordset
    RS.CursorLocation = adUseClient
   
    '// SQL 문 작성
    'sSQL = "SELECT * FROM tblName"
    sSQL = "SELECT uid, name, email, sex FROM tblName"
   
    '// MySQL 데이터 가져오기
    RS.Open Source:=sSQL, ActiveConnection:=DBConn, CursorType:=adOpenDynamic, LockType:=adLockReadOnly, Options:=adCmdText

    RS.MoveFirst  '// Move to the first record
    Worksheets("TEST").Select   '// 다른 시트에 있어도 TEST 시트로 ActiveSheet 가 전환됨
    With Worksheets("TEST") '// Sheet 명을 지정한다
        .Range("A1:AZ1048576").ClearContents    '// 기존 데이터는 전부 삭제
        For i = 1 To RS.Fields.Count        '// MySQL 필드의 제목 가져다 뿌려준다
            .Cells(1, i).Value = RS.Fields(i - 1).Name
        Next i
   
        .Range("A2").CopyFromRecordset RS   '// MySQL 데이터를 A2 열부터 뿌려준다
       
        .Range([A1], Cells(1, RS.Fields.Count)).Select
        Selection.AutoFilter
        Cells(1, 2).Select
        .Columns.AutoFit      '// 전체열 열너비 자동맞춤
    End With
   
    '//Close connection again
    RS.Close
    DBConn.Close
    
    Set RS = Nothing
    Set DBConn = Nothing
End Sub

GetMysSQLData.xlsm

첨부된 샘플파일에 설명이 나와 있으니 수정해서 사용하면 됩니다.


블로그 이미지

Link2Me

,