• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ExcelのVBAによる参照設定について)

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

このQ&Aのポイント
  • ExcelのVBAでAccessの参照設定をしようとした際に「Dim Ref As Reference」の部分が「ユーザー定義型は定義されていません」となってしまいコンパイルできません。
  • Excelでは「Reference」というデータ型が使えないため、どのように書いたらよいのでしょうか?
  • Accessの参照設定にチェックを入れると問題ないです。

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

すこしだけ判ったっぽいかも。 テスト条件 Excel2010 参照設定 Visual Basic for Applications MIcrosoft Excel 14.0 Object Library OLE Automation Microsoft Visual Basic for Applications Extensibirity 5.3 Microsoft Office 14.0 Object Library (Access にはまだ入れていません) Excelの設定 ファイル→オプション→セキュリティセンター→マクロの設定から VBA プロジェクト オブジェクト モデルへのアクセスを信頼する にチェックを入れて置きます。 Sub refList()   '要参照設定 Microsoft Visual Basic for Application Extensibility x.x   Dim ref As Reference   For Each ref In Application.VBE.ActiveVBProject.References     Debug.Print ref.Name     Debug.Print ref.GUID     Debug.Print ref.Major     Debug.Print ref.Minor     Debug.Print "--------------"   Next   Set ref = Nothing End Sub これでイミディエイトウィンドウに設定のリストが出力されます。 Microsoft Access14.0 Object Library に参照設定のチェックを入れて 行うと Access {4AFFC9A0-5F99-101B-AF4E-00AA003F0F07} 9 0 が得られますので Sub refSet()   Dim ref As Reference   With Application.VBE.ActiveVBProject.References   Set ref = .AddFromGuid("{4AFFC9A0-5F99-101B-AF4E-00AA003F0F07}", 9, 0)   Set ref = Nothing   End With End Sub のような事をするとAccessに参照設定できました。 Reference オブジェクトは、AccessにもありますのでVBE?を指定してあげないと うまく行かないようです。(ちょっと怪しい解説) 少し思うのは、参照設定をVBAで自動的に行うよりも 参照設定を行っておいて開発し、出来上がったら参照設定を外して CreateObject("Access.Application") で実行時バインディングにして 細々とした修正を行った方が良いように感じます。

zenithcooler
質問者

お礼

回答ありがとうございます。 ご指摘の通りにしてみたところ、うまくいきました。ありがとうございます。 自分も最初は参照設定を外しても動くように修正していたのですが、作成したファイルや変数が多すぎて途中で挫折してしまいました。 新たに作成するものは参照設定しなくてもいいように作ってみたいと思います。 ありがとうございました。

その他の回答 (1)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

Excelの参照設定に Microsoft Visual Basic for Application Extensibility x.x がありますのでチェックを入れてみてください。 x.x はバージョンによって異なります。

zenithcooler
質問者

お礼

回答ありがとうございます。 ご指摘の通りにしてみると、コンパイルエラーはなくなりました。しかし、実行してみると参照設定は追加されていませんでした。 エラーを確認すると、「オブジェクトが必要です」となっていました。 Set Ref = References.AddFromGuid(strGUID, 1, 3) の部分だと思うのですが、どのようにしたらよいのでしょうか?