●概要●
現在参照設定されているタイプライブラリのGUIDや、バージョン情報を取得する方法を説明します。
●準備●
- 新規標準モジュールを用意し、以下のプロシージャを記述します。
- VBEのメニューから、[表示]−[イミディエイトウィンドウ](Ctrl+G)を選択し、イミディエイトウィンドウを表示させておきます。
※Access97の場合はデバッグウィンドウになりますので、以後読み替えて下さい。
●サンプルコード●
Private Sub CheckGUID()
Dim Ref As Reference
For Each Ref In References
Debug.Print Ref.Name
Debug.Print Ref.Guid
Debug.Print Ref.Major
Debug.Print Ref.Minor
Next
Set Ref = Nothing
End Sub
●動作確認●
上記プロシージャを実行して下さい。標準モジュールですので、該当のプロシージャ内にカーソルを置いて実行ボタンを押すか、F5キーを押します。
すると、イミディエイトウィンドウに現在参照設定されているライブラリの名前・GUID・メジャーバージョン・マイナーバージョン・フルパスが表示されます。
●詳細●
VBAにて参照設定を行うためにはReferencesコレクション中のReferenceオブジェクトを使用します。AddFromGUIDメソッドにて参照設定を行う場合にはGUIDはもちろん、メジャー・マイナーバージョンが必要になります。AddFromFileメソッドを使用する場合には、ライブラリファイルのフルパスが必要となります。
それらを調べるために、今回のサンプルを使用します。
具体的に特定のライブラリのGUID等を調べるためには、以下のような手順で処理を行います。
- まず、調べたいライブラリを手動で参照設定します
- サンプルプロシージャを実行します
- イミディエイトウィンドウに表示された情報をメモします
●備考●
他のアプリケーションの機能を使用する場合、ProgIDが分かっているなら、必ずしも参照設定は必要ではありません。レイトバインディング(実行時参照)させれば済むからです。
しかし、DAOやADOXといったミドルウェアはレイトバインディング出来ませんし、ライブラリへの参照を設定してからそのオブジェクトを処理する方が、オートメーション コードの実行が速くなります
例えば、Excelをオートメーションで操作する場合、参照設定されていないと、「Dim objXL As Object」と総称オブジェクト型で宣言する必要がありますが、参照設定後は「Dim objXL As Excel.Application」とExcel.Application型で宣言できるようになります。
また自動メンバ表示などのインテリセンス機能を使用できる用になる点も、生産効率に大きく寄与するはずです。
ですから、実行速度はもとより、コードの可読性やデバッグの効率性を考えれば、出来るだけアーリーバインディング(事前参照)を行っておいたほうが良いということになります。
●用語説明●
<< タイプライブラリ >>
外部から使用可能なように公開されているオブジェクト、プロパティ、およびメソッドの標準的な説明を含むファイル、または別のファイル内のコンポーネント。
<< GUID >>
Globally Unique Identifierの略。ファイルの一意性を保つために、時刻とランダム値、ネットワークカードのMACアドレスによって生成される128ビットの整数値。世界中で重複しない値になることが、ある確率で保証されている。
タイプ ライブラリはすべて、レジストリに格納されているGUIDに関連付けられています。タイプライブラリへの参照を設定すると、そのGUIDを使ってタイプライブラリが識別されます
<< ProgID >>
あるプログラムを一意に識別するためのプログラムID。オートメーションオブジェクトを作成するときに使用する。