• ベストアンサー

ExcelでVBAで自動参照設定

Excel VBAで参照設定をモジュールで行いたいのですが、 何かいい方法はありますか。 宜しくお願い致します。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

> Excel VBAで参照設定をモジュールで行いたい このような需要は、例えば WinXP, Win2000 のように異なる OS が 混在する環境であっても使用するライブラリへの参照設定を有効に するためかと思いますが... Excel について言えば、開発 PC 以外でそれを実行しようとしても  ・参照不可となった時点で、ライブラリに依存したコードは   コンパイルエラーとなり、実行不可となる つまり、  ・参照設定を更新するコードも当然動かない のですけども、その点については大丈夫ですか? 参照設定を更新するというアプローチではなく、#1 ご回答のように、  ・CreateObject を使う(レイトバインド)  ・使用が想定される PC の OS, OFFICE の一番下位バージョンに   合わせてコードを書く  ・最初から特殊なライブラリは使わない といった工夫をした方が確実ですよ。 もし上述の問題が問題とならない、またはクリアされている状況での ご質問でしたら、パス指定の AddFromFile に加え、AddFromGUID メソッドも考えてみて下さい。 例えば、システムフォルダなら  WinXP --> C:\Windows\System32  Win2K --> C:\WinNT\System32 といった違いがありますから。

その他の回答 (2)

  • pauNed
  • ベストアンサー率74% (129/173)
回答No.2

こんにちは。 実用性はおいといて、方法論としてなら 既に Wendy02 さんが書かれてますが、 AddFromFile メソッド でできますね。 Sub Lib_Add()   Const fn As String = "scrrun.dll"  '追加するライブラリを指定   Dim ref As Object   Dim msg As String   With ActiveWorkbook.VBProject     For Each ref In .References       If ref.FullPath Like "*" & fn Then Exit For     Next ref     If ref Is Nothing Then       .References.AddFromFile fn       msg = "参照追加."     Else       msg = "参照済み."       Set ref = Nothing     End If   End With   MsgBox msg End Sub On Error Resume Next ActiveWorkbook.VBProject.References.AddFromFile "scrrun.dll" でもいいかもしれませんが。 Sub Lib_Get() '参考:参照済みLib列挙   Dim ref As Object      For Each ref In ActiveWorkbook.VBProject.References     Debug.Print ref.Name, ref.Description, ref.FullPath   Next ref End Sub #確か、XP/2003では[ツール]-[マクロ]-[セキュリティ]の #「Visual Basic プロジェクトへのアクセスを信頼する」の #チェックが必要だったかと思います。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 単に、参照設定をプログラムで行いたいといわれても、全体的な話では出来ないように思います。 一般のアドイン等なら、 ThisWorkbook.VBProject.References.AddFromFile パス& "\ファイル名" で出来ると思いますが、他は、CreateObject でオブジェクトの呼び出しだと思います。Excelでは、参照設定自身が、下位バージョンとの整合性でエラーが出ない限りは、そのようなコードは使わないような気がしますが。

関連するQ&A

  • 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

  • Excel 参照範囲をVBAで設定について

    Excel 参照範囲をVBAで設定について win2000 Excel2000 VBAでOFFSETを使用して参照範囲を設定しようとするとダブルコーテーションがついてしまいうまくいきません Workbooks("Book1.xls").Names.Add Name :="AA", RefersToR1C1:="OFFSET(Sheet1!$A$2,0,0,COUNTA(Sheet1!$A:$A)-1,1)" (A列が可変なのOFFSETを使用しております) 解決方法をご存知の方ご教授お願い致します

  • 参照設定を自動で行う

    インターネットで調べたところ、アクセスでは[References]コレクション?で「参照設定」を自動で行えるようですが、エクセルのVBAでも同様のことが出来るのでしょうか? 良い方法がありましたらご教授ください。

  • 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 こういうコードの調べ方がわかりません。

  • Excelの参照設定について

    VBAの参照設定を変更して保存するにはどうしたら良いのでしょうか。 特定のbookだけじゃなく、Excelの元の設定で常に変更する場合です。 ファイルを作る度に一回一回設定するの面倒だと思ったので、何か良い方法はないでしょうか。

  • アクセスVBAの参照設定

    アクセスVBAからエクセルを使うためにVBAのツールメニュでExcel11.0 Object Libraryを参照設定すると、なぜか「参照不可」になってしまいます。 別のパソコンでは問題ありません。 原因は何でしょうか?どうすれば解決できるのでしょうか? よろしくお願いします。

  • エクセルVBAで参照設定というフォルダは何?

    エクセル2000です。 今はいない人の作成したエクセルのBOOKですが、修正をたのまれてみてみたところ、Visual Basic Editor で当該BOOKの標準モジュールフォルダのすぐ下に参照設定という見慣れないフォルダがあり、その中に「参照先 **(省略)**.XLA」というものがありましたが、クリックしてみても何も表示されません。 これは何でしょうか? どうやったら中身を見られるのでしょうか? へたにいじっておかしなことになりはしないかと不安です。

  • EXCEL2000 VBAでのWORD参照設定

    EXCEL2007では、VBEのメニューから"MICROSOFT WORD *.* OBJECT LIBRARY"の参照設定が出来ますが、EXCEL2000ではWORD参照設定が見当たりません。 EXCEL2000 VBAでのWORD参照設定方法を教えて下さい。 会社では、まだEXCEL2000を使用しているので、よろしくお願いします。

  • Access VBA 参照設定とは・・?

    Access初心者です。2003を使用しています。 ライブラリの参照設定(この表現でわかるでしょうか?)で参照するライブラリを増やし、モジュールを作成しました。このモジュールを含むツールは問題なく私のPCでは動いていましたが、ファイルサーバに投入し他のPCで実行させると、「・・・参照する切断された参照が含まれています。」とエラーがでてしまいます。 エラーを一旦閉じ、参照設定を見ると「(非参照)・・・・」にチェックが入っていました。このチェックを外すと問題なく動きます。チェックを外す作業を他の人にやってもらったので、ライブラリ名までわかりませんが、ツール作成時に「Microsoft ActiveX Data Object 2.1 Library」を参照可能にしました。 以下が初心者な質問ですがご教授いただきたい部分です。 ライブラリの参照設定は、インストールされているAccessに設定されるのでしょうか?それとも、作成したファイル毎の設定になるのでしょうか?前述の場合でしたら、ツールを配付した先で設定を変更してもらわねばなりません。後述でしたらモジュールをインポートした際に参照設定を変更しなければなりません。 また、参照設定の変更はVBAを用いて変更可能でしょうか?(フォームボタンから参照のON・OFF) へたくそな文章で伝わり難いとは思いますが、どなたかご教授ねがいます。

  • 参照設定 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です。

専門家に質問してみよう