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
첨부된 샘플파일에 설명이 나와 있으니 수정해서 사용하면 됩니다.
'업무 능력 향상 > 엑셀 VBA 활용' 카테고리의 다른 글
[VBA] 노래가사 파일 내보내기 (0) | 2014.08.24 |
---|---|
[VBA] 중복개수 표시 (0) | 2014.08.23 |
VBA 와 MYSQL 연동 준비작업 (0) | 2014.07.28 |
날씨정보 추출 (1) | 2014.06.22 |
한 시트 파일을 여러개로 나눠 저장 (0) | 2014.06.14 |