現在参照設定されているタイプライブラリのGUIDや、バージョン情報を取得
する方法を説明します。
● 準備 ●
(1) 新規標準モジュールを用意し、以下のプロシージャを記述します。
(2) 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等を調べるためには、以下のような手順で
処理を行います。
(1) まず、調べたいライブラリを手動で参照設定します
(2) サンプルプロシージャを実行します
(3) イミディエイトウィンドウに表示された情報をメモします
● 補足説明 ●
他のアプリケーションの機能を使用する場合、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。オートメーションオ
ブジェクトを作成するときに使用する。
|