【Access】 GUID를 사용하여 VBA에서 참조 설정을 수행합니다.

3005 단어 VBAGUIDaccess
Access에서 개발한 도구를 배포하면 상대방과 자신의 사무실 버전이 다르며,
시작시 참조 설정 오류가 발생합니다.
Access 개발에서 드물게 자주 있는 녀석의 대처.

사용자 PC마다 매번 수동으로 참조 설정을 변경하는 것은 번거롭기 때문에
VBA에서 버전을 확인하고 참조 설정을.

참조 설정을 VBA에서 수행하는 두 가지 방법이 있습니다.
  • 라이브러리의 전체 경로 지정 (AddFromFile)
  • GUID 지정 (AddFromGuid)

  • 전체 경로를 지정하는 방법은 여러 사람에게 배포하기에는 적합하지 않으므로,
    이번에는 GUID를 지정하여 설정하는 방법.

    GUID 조사



    필요한 정보는 GUID와 그 버전 (메이저 & 마이너).
    이어서 사무실 버전도 확인.
    Sub survey_guid()
    
        Dim Ref As Reference
    
        Debug.Print "VERSION:" & Application.Version
    
        For Each Ref In References
            Debug.Print "NAME:" & Ref.Name & " GUID:" & Ref.Guid & " MAJOR:" & Ref.Major & " MINOR:" & Ref.Minor
        Next
    
        Set Ref = Nothing
    
    End Sub
    
    

    결과


    실제 참조 설정과 비교하면 이런 느낌.

    참조 설정 창과 동일한 순서로 출력됩니다.
    (영어 OS에 일본어 Office를 설치하고 있는 관계로 일부 문자 깨져 있습니다.)

    이번 VBA에서 참조 설정하고 싶은 것은 ADO Ext.XX와 Excel object Library.
    2개의 화면으로부터 각 라이브러리의 GUID와 그 메이저 버젼·마이너 버젼을 특정할 수 있다.

    ADO
    NAME:ADOX GUID:{00000600-0000-0010-8000-00AA006D2EA4} MAJOR:6 MINOR:0

    Excel 개체 라이브러리
    NAME:Excel GUID:{00020813-0000-0000-C000-000000000046} MAJOR:1 MINOR:7

    화면과 결과는 Office2010.

    사용할 수 있는 Office 버전에서 각각 비슷한 조사를 합니다.

    참조 설정



    위에서 얻은 GUID 및 버전을 사용하여 참조 설정.
    이번에는 Access 시작시 열리는 폼의 Form_Load 이벤트에 기재하고,
    office2010과 2007의 이용자가 있는 경우를 상정.
    Private Sub Form_Load()
        Dim Ref As Reference
        Const strADO As String = "{00000600-0000-0010-8000-00AA006D2EA4}"
        Const strExcel As String = "{00020813-0000-0000-C000-000000000046}"
    
        On Error Resume Next
    
        If Application.Version = 14# Then
            Set Ref = References.AddFromGuid(strADO, 6, 0)
            Set Ref = References.AddFromGuid(strExcel, 1, 7)
        ElseIf Application.Version = 12# Then
            Set Ref = References.AddFromGuid(strADO, 2, 8)
            Set Ref = References.AddFromGuid(strExcel, 1, 6)
        End If
    
        Set Ref = Nothing
    
    End Sub
    

    사무실 버전을 얻고 버전별 조건 분기,
    References.AddFromGuid("GUID", メジャーバージョン, マイナーバージョン)
    

    이제 각 라이브러리의 참조 설정을합니다.

    에러 처리는 손잡이.
    이미 참조 설정되어 있는 경우에는 에러 No.32813이 돌아오므로, 필요에 맞추어 에러 처리를.
    (참조 설정이 저장되므로 오류 32813에 대한 일부 오류 처리
    를 해 두지 않으면, 2회째 이후에 기동했을 때 에러가 발생한다. )
    (상기와 같은 이유로 배포시에는 한번 참조 설정을 해제하고 나서 배포하는 것을 잊지 말고.)

    참고 : VBA에서 참조 설정 설정 및 해제(ACCESS)

    ※더 스마트한 방법 아시는 분 있으면 가르쳐 주세요.

    좋은 웹페이지 즐겨찾기