モジュール操作 |
別の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