VBAで参照設定を設定・解除する(ACCESS)
Home>Information>VBAで参照設定を設定・解除する(ACCESS)
Microsoft AccessでVBAを使ったとき、Access2000、2002、2003などのバージョンによって、参照設定を変えなくてはならないときがあります。
例えば、Access2003においてVBAでExcelを操作する場合、Microsoft Excel 11.0 Object Libraryを参照しますが、2000では、Microsoft Excel 9.0 Object Libraryを参照しなければならず、11.0は「参照不可」と表示され動作しません。
参照を手動で設定する場合
Accessで参照設定を手動で行うには、「ツール」→「マクロ」→「Visual Basic Editor」→「ツール」→「参照設定」を選択し、該当のライブラリにチェックを入れます。
この設定をすると、既に述べたようにバージョンの違うAccessで開くと参照不可になります。参照不可になると、それに関係のないVBAまで動作しなくなることがあります。
(フォームを開くだけのVBAも動作しなくなりました)
この場合、参照不可の設定のチェックをはずし、正しいライブラリにチェックを入れると動作します。
参照を自動で設定する場合
参照をVBAで設定したり解除したりすることはできます。
しかし、既に参照設定を手動で行っている場合は、VBAが動作しないので、自動設定が動作しません。
そこで、予め参照設定をするのをやめておき、フォームを起動したときに参照設定を行い、終了するときに参照設定を解除します。
※終了するときに参照設定を解除しないと、そのまま参照設定が有効になってしまうので、バージョン違いのAccessの入っているコンピュータで開くと、参照エラーになってしまいます。
自動的に参照設定するVBA
On Error Goto Err_Shori
Dim Ref As Reference
Const strExcel As String = "{00020813-0000-0000-C000-000000000046}"
Set Ref = References.AddFromGuid ( strExcel , 1, 3 )
Set Ref = Nothing
Err_Shori:
If Err.Number = 32813 Then
Resume Next
Else
Msgbox Err.Description
End If
これはExcelのライブラリを参照するVBAです。
1行目はエラー処理で、Err_Shori以降に飛ばします。
参照設定が既にされているときは、エラーが出てしまうので、その場合には回避させます。
strExcelに代入した、「00020813-0000-0000-C000-000000000046」は、GUIDというもので、この値がExcelのライブラリを示しています。
自動的に参照を解除するVBA
Dim Ref As Reference
For Each Ref In References
If Ref.Name = "Excel" Then
Application.References.Remove Ref
End If
Next Ref
上記のコードは、Excelのライブラリの参照設定を解除します。
GUID等を調べる
Excelのライブラリ以外のライブラリのGUID等を調べるには、以下のコードをボタンのクリックイベントなどに設定して、表示させます。
Dim Ref As Reference
For Each Ref In References
Msgbox "Name:" + Ref.Name + "/ GUID:" + Ref.Guid
Next
Set Ref = Nothing
関連リンク
よく読まれている記事
- 右クリックメニューの表示が遅い【Information】
- 画像の一部にリンクを貼る(クリッカブルマップ【Dreamweaver】
- 一定時間でローテーションする広告【JavaScript】
- Dreamweaver【Dreamweaver】
- クリックした画像を拡大・縮小する【JavaScript】
UpDate:2010-1-13