본문 바로가기
ADO

Early binding 이제 자동으로..(Feat.Guid)

by 일등미노왕국 2022. 5. 3.

 

Option Explicit
Sub Haja_ListReference()
    
    Dim i&
    On Error Resume Next
        With ActiveSheet
            [a1].CurrentRegion.Clear
            .[a1] = "참조이름"
            .[b1] = "참조경로"
            .[c1] = "GUID"
            [a1:c1].HorizontalAlignment = xlCenter
        End With
        
        For i = 1 To ThisWorkbook.VBProject.References.Count
        
            With ThisWorkbook.VBProject.References(i)
                ActiveSheet.Cells(Rows.Count, "a").End(3)(2) = .Name
                ActiveSheet.Cells(Rows.Count, "b").End(3)(2) = .FullPath
                ActiveSheet.Cells(Rows.Count, "c").End(3)(2) = .GUID
            End With
            
        Next i
        Columns.AutoFit
        
        [a1].CurrentRegion.Borders.LineStyle = 1
    On Error GoTo 0
End Sub

도구 참조를 수동으로 하는 방식에서 Guid를 추가 하여 자동으로 참조를 추가하는 방법이다.

 

위 코드를 진행하면 현재 참조되어 있는 참조이름, 경로 ,Guid가 출력된다. 경로의 Dll 방식으로 추가하는 방법도 있지만 Dll이 없는것도 있어서 Guid 방식으로 참조를 추가하는 방법이 더 나은 듯 하다.

VBA
Excel
stdole
Office
MSHTML
딕셔너리
정규식
WinHttp
ADODB
ArrayList
{000204EF-0000-0000-C000-000000000046}
{00020813-0000-0000-C000-000000000046}
{00020430-0000-0000-C000-000000000046}
{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}
{3050F1C5-98B5-11CF-BB82-00AA00BDCE0B}
{420B2830-E718-11CF-893D-00A0C9054228}
{3F4DACA7-160D-11D2-A8E9-00104B365C9F}
{662901FC-6951-4854-9EB2-D9A2570F2B2E}
{B691E011-1797-432E-907A-4D8C69339129}
{BED7F4EA-1A96-11D2-8F08-00A0C9A6186D}

많이 쓰는 Guid를 적어놨으니 추가 하기만 하면 된다.

요즘  AdoDb를 공부하고 있으니 이를 참조해 보겠다.

 

엑사남님 강의 자료를 가지고 왔다.

https://www.youtube.com/watch?v=cttL-5rihc8&t=1103s 

 

Option Explicit

Sub Haja_Guid()

    Dim StrGuid$: StrGuid = "{B691E011-1797-432E-907A-4D8C69339129}" '= ADODB참조
    
    On Error Resume Next
    ThisWorkbook.VBProject.References.AddFromGuid StrGuid, 0, 0 '= 가장 최신버전
    
    Call Haja_Adodb_Test

End Sub

Sub Haja_Adodb_Test()

    Dim Rs         As New ADODB.Recordset
    Dim strPath    As String
    Dim strSQL     As String
    Dim strConn    As String
    
    strPath = ThisWorkbook.FullName
    
    '''' 커넥션 스트링 '''
    strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
              "Data Source=" & strPath & ";" & _
              "Extended Properties=Excel 12.0;"
     
    strSQL = " SELECT 성명,평균점수" & _
             " FROM [Table_1$] " & _
             " WHERE 합격여부='불합격'" & _
             " ORDER BY 평균점수 DESC "
    Rs.Open strSQL, strConn
    
    If Rs.EOF Then
        MsgBox "조건에 맞는 데이터가 없습니다."
        Rs.Close
        Set Rs = Nothing
        Exit Sub
    Else
        Range("J11").CurrentRegion.Offset(1).Clear
        Range("J11").CopyFromRecordset Rs
    End If
       
    Rs.Close
    Set Rs = Nothing
End Sub

Excel_DB.xlsm
9.22MB

댓글