モジュール操作

別のAccessファイルを参照設定する

使用例

別のAccessファイルを参照し、モジュール等を操作できるようにする。

Sub 参照設定()
 On Error Resume Next

 Dim ref As Reference
 Dim strFile As String

 strFile="C:\フルパス名\Test.accdb"

 Set ref = References.AddFromFile(strFile)

End Sub

Sub 参照設定_解除()
 On Error Resume Next

 Dim ref As Reference

 Set ref = References!Test
 References.Remove ref

End Sub






'参照設定()を実行する。
'『Test』が参照設定される。


'プロジェクトエクスプローラに『Test』が表示される。


Sub 参照_呼び出し()
 Call Test_Msg

End Sub



※Test.accdbの内容

Public Function Test_Msg()
    MsgBox "これは、参照されたモジュールです。"
End Function

ライブラリのコレクションを列挙します。

使用例

Sub ReferenceProperties()
    Dim ref As Reference

    For Each ref In References
        ' IsBroken プロパティをチェックします。
        If ref.IsBroken = False Then
            Debug.Print "名前: ", ref.Name
            Debug.Print "フル パス: ", ref.fullpath
            Debug.Print "バージョン: ", ref.Major & "." & ref.Minor
            Debug.Print "GUID: ", ref.Guid
        Else
            Debug.Print "無効な GUID 参照:"
            Debug.Print "名前: ", ref.Name
            Debug.Print ref.Guid
            Debug.Print "バージョン: ", ref.Major & "." & ref.Minor
        End If
    Next ref
End Sub

実行結果



名前:         VBA
フル パス:    C:\PROGRA~1\COMMON~1\MICROS~1\VBA\VBA7\VBE7.DLL
バージョン:   4.1
GUID:         {000204EF-0000-0000-C000-000000000046}

名前:         Access
フル パス:    C:\Program Files\Microsoft Office\Office14\MSACC.OLB
バージョン:   9.0
GUID:         {4AFFC9A0-5F99-101B-AF4E-00AA003F0F07}

名前:         stdole
フル パス:    C:\WINDOWS\system32\stdole2.tlb
バージョン:   2.0
GUID:         {00020430-0000-0000-C000-000000000046}

名前:         DAO
フル パス:    C:\Program Files\Common Files\Microsoft Shared\OFFICE14\ACEDAO.DLL
バージョン:   12.0
GUID:         {4AC9E1DA-5BAD-4AC7-86E3-24F4CDCECA28}


ライブラリの自動参照設定。

使用例

※配布時における、ライブラリの『参照不可』を回避する為の自動参照
(バージョンを正確に読ませることで『参照不可』を回避:*.mdb,*accdbのみ対応)

Function SetGUID()
    On Error GoTo Err_Check:
    
    Dim ref As Reference
    Dim i As Double
    Dim lngMajorNo As Long 'メジャーNo
    Dim lngMinorNo As Long 'マイナーNo
    
'    ライブラリのGUID設定(あらかじめ設定したいGUIDを調べておく)
    
'    Microsoft DAO 3.6 Objects Library (DAO)
    Const strDAO As String = "{00025E01-0000-0000-C000-000000000046}"
    
'    Microsoft ActiveX Data Objects Library 2.1 (ADO)
    Const strADO As String = "{00000201-0000-0010-8000-00AA006D2EA4}"
                                     
'    Microsoft Office
    Const strOffice As String = "{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}"
    
'    Visual Basic for Applications Extensibility 5.3
    Const strVBIDE As String = "{0002E157-0000-0000-C000-000000000046}"
    
   
'    参照設定

    For i = i To i + 0.1
    
        If i > 0 Then
            lngMajorNo = 0
            lngMinorNo = i * 10
        Else
            lngMajorNo = Int(i)
            lngMinorNo = (i - Int(i)) * 10
        End If
    
        Set ref = References.AddFromGuid(strDAO, lngMajorNo, lngMinorNo)
        Set ref = References.AddFromGuid(strADO, lngMajorNo, lngMinorNo)
        Set ref = References.AddFromGuid(strOffice, lngMajorNo, lngMinorNo)
        Set ref = References.AddFromGuid(strVBIDE, lngMajorNo, lngMinorNo)
    
    Next i

Func_Exit:
    Set ref = Nothing
    Exit Function

Err_Check:

    If Err.Number = 32813 Then
        Resume Next
    Else
        MsgBox "Error Number : " & Err.Number & vbCrLf & Err.Description, _
				vbExclamation, "ライブラリ参照不可"
        GoTo Func_Exit:
    End If
End Function