반응형
엑셀 파일로 만들어서 올려두었습니다.
http://acidpop.tistory.com/166
업무중에 Oracle DB 의 값들을 Select 하여 조회된 데이터를 복사하고
엑셀에 붙여 넣어 봐야할 업무가 있었다.
Oracle SQL Developer 와 엑셀을 왔다갔다 하다 보니 반복된 작업이 너무 많아 찾아 보던중
엑셀에서 Oracle DB 에 직접 붙어 데이터를 select 할 수 있었다.
다음 매크로들을 이용하여 DB에 접속하면 된다.
그 전에 Visual Basic 창에서 도구 -> 참조 메뉴를 클릭 한 다음
사용가능한 참조 목록에서
Microsoft ActiveX Data Objects 2.8 Library
Microsoft Excel 15.0 Object Library 를 체크하여 추가해주어야 한다.
DBSERVICENAME 부분은 각 DB 이름에 맞게 변경하여 사용
' AdoCn 변수, strDBIp 는 Oracle DB 의 IP 주소 Public Function ConnectDB(ByRef AdoCn As ADODB.Connection, strDBIp As String) As Boolean AdoCn.CursorLocation = adUseClient ' 1111 은 DB의 포트 번호이다. 각 환경에 맞게 Port 를 설정하면 된다. ' DBSERVICENAME 은 DB의 서비스 이름이다. 각 환경에 맞게 변경하면 된다. AdoCn.ConnectionString = "Provider=MSDAORA;Data Source=" + strDBIp + ":1111/DBSERVICENAME;User ID=scott;Password=tiger" AdoCn.Open If AdoCn.State = adStateOpen Then ' adStateOpen 이면 연결 됨 ConnectDB = True Exit Function Else ' adStateClose 이면 연결 안됨 ConnectDB = False Exit Function End If End Function Sub GetDB() Dim AdoCn As ADODB.Connection Dim rs As ADODB.Recordset Dim bOpen As Boolean Dim szQuert As String Dim szDbIP As String Set rs = New ADODB.Recordset Set AdoCn = New ADODB.Connection szDbIP = "127.0.0.1" bOpen = ConnectDB(AdoCn, szDbIP) If bOpen Then szQuery = "SELECT * FROM DB_TABLE_NAME WHERE ID = 10" Set rs = AdoCn.Execute(szQuery) ' rs 에 담겨져 있는 객체를 A1 셀에 붙여넣기 Range("A1").CopyFromRecordset rs AdoCn.Close Else MsgBox("DB Connect Failed") End if End Sub
'Office > MS Office' 카테고리의 다른 글
엑셀(Excel) 로 DB(Oracle, MS-SQL, MySQL, PostgreSQL) 연결 (1) | 2014.10.15 |
---|---|
MS Word 자간 늘림, 자간 줄임, 줄간격 조정 매크로 (9) | 2011.04.22 |
구글 독스 플러그인 (0) | 2011.03.25 |