VBAで参照設定されているライブラリの一覧を取得する方法

このQ&Aのポイント
  • VBAで参照設定されているライブラリの一覧を取得する方法について解説します。
  • Referencesの参照設定を行わないと、VBAコードを実行する際にコンパイルエラーが発生します。
  • 参照設定のチェック方法についても説明します。
回答を見る
  • ベストアンサー

Referencesの参照設定

http://www.tsware.jp/tips/tips_565.htm を参考に、 VBAで参照設定されているライブラリの一覧を取得したいのですが、 Sub t() Dim Ref As Reference For Each Ref In References With Ref Debug.Print .Name Debug.Print .FullPath Debug.Print .GUID Debug.Print .Major Debug.Print .Minor Debug.Print .IsBroken End With Next Ref End Sub を実行すると、 Ref As Reference の部分で、コンパイルエラー(ユーザー定義型は定義されていません) になります。 多分、Referencesの参照設定をしないと、このコードは使えないからだと思うのですが、 参照設定にどこにチェックをすればいいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

こんばんは。 ご覧になったURLは、アクセスVBAの解説です。 ご質問の様子で上手くいかなかったってことは、アクセスじゃなく例えばエクセル?で実行しているという状況でしょうか。 例えばエクセルの場合、ご質問の直接の回答は Microsoft Visual Basic for Aplications Extensibility に参照設定を入れて使います。 また、セキュリティセンターの設定のマクロの設定で、「VBAプロジェクトオブジェクトモデルへのアクセスを信頼する」にチェックを入れておく必要があります。 またエクセルで行う場合 http://officetanaka.net/excel/vba/tips/tips100.htm も参考に、referencesコレクション単独では参照できない点も修正が必要です。

idknljif32
質問者

お礼

ありがとうございます。

関連するQ&A

  • 参照設定 VBAで行ないたいのですが

    参照設定で[Microsoft Visual Basic Application Extensibility]をチェックを VBAで行ないたいのですが Sub test() Dim Ref As Reference 'Excel Set Ref = References.AddFromGuid("{00020813-0000-0000-C000-000000000046}", 1, 7) Set Ref = Nothing End Sub のようになるとしたら、どうすればいいのでしょうか? エクセルの参照設定の仕方はネットからコピーしたもので、 やりたい参照設定のパスの調べ方がわかりません。 ("{00020813-0000-0000-C000-000000000046}", 1, 7) が何を意味するのか、何の情報かわからない為 [Microsoft Visual Basic Application Extensibility]についてもわかりません。 アクセス2010です。

  • ExcelのVBAによる参照設定について

    VBAによる参照設定について教えてください。 以前にOffice2010と2003の互換性の問題について教えていただいた際に、以下のようなやり方を教えていただき、AccessのVBAでExcelの参照設定はできたのですが、ExcelのVBAでAccessの参照設定をしようとした際に「Dim Ref As Reference」の部分が「ユーザー定義型は定義されていません」となってしまいコンパイルできません。Accessの参照設定にチェックを入れると問題ないので、Excelに「Reference」というデータ型が使えないのだと思うのですが、Excelではどのように書いたらよいのでしょうか? On Error GoTo Err_Rise Dim Ref As Reference Const strGUID As String = "{00020813-0000-0000-C000-000000000046}" 'Excelの参照設定をする場合 Const strGUID As String = "{4AFFC9A0-5F99-101B-AF4E-00AA003F0F07}" 'Accessの参照設定をする場合 Set Ref = References.AddFromGuid(strGUID, 1, 3) Set Ref = Nothing Err_Rise: If Err.Number = 32813 Then Resume Next End If On Error GoTo 0

  • vbaで参照設定

    Dim Ref As Reference 'Excel Set Ref = References.AddFromGuid("{00020813-0000-0000-C000-000000000046}", 1, 7) 'ADODB Set Ref = References.AddFromGuid("{2A75196C-D9EB-4129-B803-931327F72D5C}", 2, 8) このような感じで、vbaで参照設定をしているのですが、 Microsoft Forms 2.0 Object Library へ、vbaで参照設定をしたい場合、どうなりますか? 今は、 http://www.moug.net/tech/acvba/0020034.html のやり方で手作業で参照設定していますが、 vbaでのやり方が知りたいです。 {00020813-0000-0000-C000-000000000046}", 1, 7 こういうコードの調べ方がわかりません。

  • VBAで参照設定を行いたい GUIDを知るには?

    オフィス2010なのですが、 VBAで参照設定を行いたいのですが GUIDというのはどうやって調べればいいのでしょうか? 例えばエクセルに参照設定したいのですが レジストリエディタを立ち上げて、 HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel のどの部分を見れば、GUIDがわかりますか? http://www.moug.net/tech/acvba/0010004.html を参考にvbaコードを作っていますが、 Public Function SetGUID() On Error GoTo Err_Check: Dim Ref As Reference 'Microsoft Excel 9.0 Objects Library (Excel2000) Const strExcel As String = "{00020813-0000-0000-C000-000000000046}" '参照設定 Set Ref = References.AddFromGuid(strExcel, 1, 3) 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 GoTo Func_Exit: End If End Function やはりこれだと、参照設定できません。 もちろんオフィスのバージョンが違うからだと思いますが。 あと、AddFromGuidメソッドの引数Major、Minorも、どの値を設定してあげればいいのかわかりません。 ご教授よろしくお願いします。

  • Access 開くときに自動で参照設定

    いつもお世話になっております。 Accessで参照設定を自動でする下記コードで、 "C:\Program Files (x86)\Microsoft Office\Office" & sansyou & "\MSOUTL.OLB" がない場合は "C:\Program Files\Microsoft Office 15\root\office15" & sansyou & "\msoutl.olb" をセット という風な条件を付けたいのですが、添削をお願いできますでしょうか。 Dim A As Object Set A = CreateObject("Outlook.Application") Dim sansyou As String sansyou = Left(A.Version, 2) Dim Ref As Reference Set Ref = References.AddFromFile("C:\Program Files (x86)\Microsoft Office\Office" & sansyou & "\MSOUTL.OLB") Set Ref = Nothing ちなみに、閉じるときに Application.References.Remove References("Outlook") で、参照設定のチェックを外しています。 バージョンがそれぞれ異なるPCでOutlookの参照設定チェックをONOFFするコードです。 よろしくお願いします。

  • APIを使う時は参照設定は不要?

    例えば Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Sub test() Dim Handle As Long Handle = FindWindow("IEFrame", vbNullString) Debug.Print Handle End Sub と言うコードでウィンドウハンドルを取得する場合、 参照設定のどこにもチェックを入れませんが、なぜ参照設定しなくても使えるのでしょうか? Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long が参照設定の代わりになるのですか?

  • 全てのプリンター名を取得したい

    エクセルで全てのプリンターのプリンター名・ドライバー名・ポート名を取得する コードを実行したいのですが Sub Sample() Dim prtLoop As Printer For Each prtLoop In Application.Printers With prtLoop Debug.Print "Device name: " & .DeviceName Debug.Print "Driver name: " & .DriverName Debug.Print "Port: " & .Port End With Next prtLoop End Sub これをそのまま貼り付けて実行しようとすると、 「prtLoop As Printer」が、ユーザー定義型は定義されていません。 になります。 何に参照設定すればいいのかわからないので、 とりあえず Dim prtLoop As Object にしたのですが、 今度は For Each prtLoop In Application.Printers で 実行時エラー438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。 になります。 どうすればいいか教えてください。

  • ExcelVBAで参照設定を自動に行う

    AccessのVBAではReferencesコレクション中のReferenceオブジェクトを使用して、行うことが出来ると、ネット上で読みました。 Excel2003で同じ事を行おうと、コーディングをしたところ、変数の宣言で「... As 」まで記述したところに表示されるメニュー(?)に、「Reference」が表示されませんでした。 「ExcelVBAで参照設定を自動に行う」方法、もしくは私の環境のExcel2003で「Reference」が表示されない考えられる原因を教授下さい。 よろしくお願いします。

  • コードで参照設定をする方法

    VBのコード内で、オブジェクトへの「参照設定」をさせる方法を教えていただけませんでしょうか。 目的は、自分のコンピュータでは参照設定してあるオブジェクトでも、ほかのパソコンではされていると限らないため、アプリ(実際はエクセルブック)の起動時に参照設定を強制したい。参照設定がないと、そのオブジェクト変数の宣言文がコンパイルエラーとなってしまいますよね・・・。 VBAのヘルプによればこちらのメソッド(object.AddFromGuid(guid, major, minor) As Reference)を使うといいような気がするのですが、参照設定したい先(具体的には「Microsoft Scripting Runtime(scrrun.dll)」)の「GUID」がわかりません。レジストリを探さないといけないのでしょうか・・・。探し方がわかりません。

  • アクセスvbaでクリップボードにコピーの動作を実行

    アクセスvbaでクリップボードにコピーの動作を実行したいです。 エクセルなら、 Sub test() Dim buf As String Dim CB As New DataObject buf = "test" With CB .SetText buf ''変数のデータをDataObjectに格納する .PutInClipboard ''DataObjectのデータをクリップボードに格納する .GetFromClipboard ''クリップボードからDataObjectにデータを取得する Debug.Print .GetText ''DataObjectのデータを変数に取得する End With End Sub これが実行できるのですが、 どうやらアクセスだと Dim CB As New DataObject これがエラーになるようです。 Dim CB As Objectにすると .SetText buf で実行時エラー91になります。 (「オブジェクト変数またはWithブロック変数が設定されていません」) http://officetanaka.net/excel/vba/tips/tips20.htm によると、 「DataObjectオブジェクトはMSFormsのメンバです。使用するには、Microsoft Forms 2.0 Object Libraryを参照設定します。または、ブックにUserFormを挿入すると自動的に参照設定されます。」 なので、アクセスvbaの参照設定で「Microsoft Forms 2.0 Object Library」を探したのですが、 ありませんでした。 当方バージョンは2010です。 アクセスでは不可能と言うことでしょうか? ご教授よろしくお願いします。

専門家に質問してみよう