VBA Oracle 접속

VBA 2012. 11. 30. 14:20
Sub conenctDB()

    Dim conn As ADODB.Connection        ' DB 연결을 위한 변수
    Dim dbRecset As ADODB.Recordset     ' DB Record 저장을 위한 변수
    
    Dim iRow As Long                    ' Record 행의 갯수 저장을 위한 변수
    Dim iColumn As Long                 ' Record 열의 갯수 저장을 위한 변수
    Dim sSQL As String                  ' SQL문을 저장하기 위한 변수
    
    Set conn = New ADODB.Connection     ' ODBC 객체생성                        
    ' --------------------------------------------------------------
    ' Oracle 접속
    ' Server = Server 이름
    ' Uid = 아이디
    ' Pwd = 패스워드
    ' --------------------------------------------------------------
    conn.ConnectionString = "Driver={Microsoft ODBC for Oracle};" & _
                            "Server=서버이름;" & _
                            "Uid=아이디;" & _
                            "Pwd=패스워드;"
    conn.Open
    
    ' ============================================================
    ' 쿼리문을 입력하고 레코드 값을 저장
    ' ============================================================
     sSQL = "select OWNER, TABLE_NAME, COLUMN_NAME, " & _
            "REPLACE(REPLACE(COMMENTS,CHR(10),CHR(1)),CHR(13),CHR(2)) AS COMMANT from all_col_comments " & _
            "where table_name LIKE 'TECF%'" & _
            " order by 2"

    Set dbRecset = New ADODB.Recordset
    dbRecset.CursorLocation = adUseClient
    
    ' =============================================================
    ' 커서 이동방법과 레코드를 읽어만 올수 있도록 설정
    ' =============================================================
    dbRecset.Open Source:=sSQL, ActiveConnection:=conn, CursorType:=adOpenForwardOnly, _
             LockType:=adLockReadOnly, Options:=adCmdText
             
    dbRecset.MoveFirst                  ' 레코드의 처음으로 이동
    
    ' =============================================================
    ' DB에서 쿼리문에 의한 값들을 엑셀 시트에 저장
    ' =============================================================
    For iRow = 1 To dbRecset.RecordCount
        For iColumn = 1 To dbRecset.Fields.Count
            Worksheets(1).Cells(iRow + 5, iColumn + 1).Value = dbRecset.Fields(iColumn - 1).Value
        Next iColumn
        dbRecset.MoveNext
    Next iRow
    
    ' ==============================================================
    ' DB연결을 종료하고 객체 저장변수와 레코드 저장변수를 초기화
    ' ==============================================================
    dbRecset.Close
    conn.Close
    Set dbRecset = Nothing
    Set conn = Nothing
End Sub

'VBA' 카테고리의 다른 글

VBA MySQL SELECT문  (0) 2012.10.09
VBA MySQL 접속  (0) 2012.10.09
VBA OnTime  (0) 2012.10.05
Posted by gosunari
,