• 締切済み

無効なオブジェクトライブラリ

エクセルVBAにて、ソフトを作製しています。 急に「無効なオブジェクトライブラリです。または定義されていないオブジェクトへの参照を含んでいます」というエラーが出てくるようになり、すべてのプロシージャが実行出来ない状況に陥ってしまします。 そうなってしまったら、全て閉じて最終保存したところまで戻らなければならず、非常にイラつきます。 中身ですが、ユーザーフォームは特に使っておらず、Sheet内のフォームのコマンドボタン、またコントロール/ツールボックスからリストボックスとテキストボックスを使っています。 ソースの中身について ・SQL接続を使っています。 ・開く度にテキストボックスを複数削除し、所定位置に複数生成します。 リストボックスやテキストボックスのサイズ、位置等変更したら、このエラーに陥る傾向があります。 エラーに陥ったソースをエラーになる前のソースに追加しても、特に問題が起こりません。 エラーメッセージのヘルプを開こうとしても、表示されません。 これは一体なにが原因なのでしょうか? 条件がどうしてもつかめません。 参照設定についても特に参照できていないライブラリはありません。 宜しくお願いします。

みんなの回答

  • NOBNNN
  • ベストアンサー率50% (93/186)
回答No.1

状況だけでは原因がつかめないのですけど もう少し具体的な情報がほしいですね。 VBAのソースとかあれば何かわかるかも、参照設定にはどのライブラリを含めているのかとか エラー 時の CPU稼働率、メモリーの占有率とか・・・・ SQLはDAOで接続、その際にODBCの設定とか・・・ SQl Server 2005 とかをしようしているとか・・・・

abcdzyx129
質問者

補足

本日自力で解決しました。 今回のプログラムでは開く度に、特定の複数のテキストボックスをDeleteし、再度テキストボックスを作り直すという処理を行っていました。 しかし、エクセル内には恐らくオブジェクトのカウンタか何か分かりませんが、Deleteしても何かの値が記憶され蓄積されていたようです。改良するたびに上書き保存してたので、それと同時に目に見えないカウンタも徐々に蓄積。カウンタが上限に到達するとエラー発動。 しかしエラーが発動しても、その特定のテキストボックスを数個消せばエラーが消えることが分かりました。(カウンタがリセットされる。) そして、workbook オープン時の処理を手動で7~10回程度実行すると、エラーに落ちることが分かりました。(テキストボックスの生成は8個+デフォルトでオブジェクトを10個程使用、なので、オブジェクトが100個ほどになると限界?) エラーに落ちると何もプロシージャが動かなくなるので、テキストボックスを手動で消す。これを繰り返せば、一応エラーを回避出来るようです。 結論から言いますと、『オブジェクトの数』が原因っぽいです。エラーメッセージがあまりにも抽象的なので、あくまで推測ですが。

関連するQ&A

  • このオブジェクトには、オートメーションオブジェクト

    アクセス2010です。 アクセスでフォームにはめ込んでいるサブフォームのデータをフィルタしようとすると ---------------------------------------------------------------------------- このオブジェクトには、オートメーションオブジェクト’カテゴリ’は含まれません。 オブジェクトのプロパティを設定するか、 メソッドを実行するVisual Basicプロシージャを実行しようとしましたが これらのプロパティまたはメソッドが使用できません。 オートメーションオブジェクトでサポートされているプロパティまたはメソッドについては、 コンポーネントのドキュメントを参照してください。 ---------------------------------------------------------------------------- と言うエラーになります。 フォームにカテゴリと言うフィールドは紐づけてないのですが なぜこのエラーが発生するのでしょうか?

  • 大量のオブジェクトで同様のイベント処理をしたい場合の記述

    Excel VBAでフォームなどに大量のオブジェクトを配置して、各々のオブジェクトで同様のイベントを処理したいのですが、まとめて記述する方法はあるのでしょうか。 ユーザーフォーム上に大量の数値入力ボックス(TextBoxオブジェクト)を配置して、全てのボックスに同様の入力値制限を課そうとして、コードが肥大化して困っています。どうかよろしくお願い致します。 例) Sub TextBox1_change() <プロシージャー> end sub Sub TextBox2_change() <プロシージャー> end sub ・・・・・・ Sub TextBox10_change() <プロシージャー> end sub (<プロシージャー>部分は共通)のように延々と記述しなくても済む方法はあるのでしょうか。

  • コントロールとオブジェクトは同じ意味でしょうか?

    アクセスを勉強中なのですが 疑問に思う言葉があります。 例えば、フォームに設置したテキストボックスは コントロールでしょか?オブジェクトでしょうか? またフォームはコントロールではなく オブジェクトであってますか? ご教示よろしくお願い致します。

  • フォーム上にある、オブジェクトの初期化

    行いたい処理は次のような処理です。 1.フォームに”クリア”ボタンを配置 2.1が押された時、フォーム上のテキストボックス、コンボボックス、チェ ックボックスが初期化される そこで、質問です。フォーム上にあるオブジェクトは60近くあるので1つ1つのオブジェクトに =Null、=""で初期化するのは大変なので、一括で初期化する方法を探しています。 どなかた、知っている方がいらっしゃったら、教えていただきたいと思います。お願いいたします。

  • accessのこのオブジェクトに値を代入することはできません エラー

    accessでデータベース参照システムを作成しているのですが、このオブジェクトに値を代入することはできません というエラーがでています。 色々過去ログを調べたのですが、私の内容と該当しそうなのがみつかりませんでした。 TABLE_A 親番号 子番号 項目a... b.... 3 , 1 , xxxxxxxxxxx 3 , 2 , xxxxxxxxxxxx TABLE_AとリンクしているフォームXを開きます。 開いたあと、filterをかけています。(例 filter : 親番号 = 3) そのフォームには、コントロールソースがいくつもあります。 編集ロックを解除して、データベースの内容を上書きしています。 新規作成時には、子番号という、テーブルのキー情報にだけ値を入れて(既存のmax値+1)、その他の項目を全てnullにして、データの新規登録を可能にさせています。 (例 : 3, 3 , xxxxxxxxのデータが作成される) ここまでは動作しています。 やりたいことは、親番号4という、TABLE_Aにない情報で、上記で、同じくフォームxを開いたあと、新規登録を可能にしたいのですが、 子番号のコントロールボックス(テキストボックス)に、1という新規番号をいれようとしたら、エラーになります。 内容は、{このオブジェクトに値を代入することはできません}です。 この解決方法がなかなかみつかりません。 説明が難しいので伝わりにくいかもしれません。 なにかありましたら、説明させて頂きます。 フォームは、 DoCmd.OpenForm stDocName, , , stLink で開いています。

  • フォームオブジェクトの削除

    HTMLで記述されたフォームオブジェクト(テキストBOXやコンボBOXなど)を 削除したい(画面上から消したい)のですが方法がわかりません。 知っている方いましたらご教授願います。

  • ACCESSで値を代入できないとは?

    ACCESS2000を使用しています。 フォームを作り、画面のテキストボックスに値を入れると、エラーになります。 エラーコードは 2448。 エラーメッセージは オブジェクトに値を代入できない と出ますが、ヘルプが参照できません。 どういうことなのでしょうか。

  • フォーム内の二つのテーブルのうち一つのテーブル内のオブジェクトの内容のみをクリアしたい

    フォーム内にテーブルを二つ作成しました。 テーブル1の中のあるチェックボックスのチェックが入っているかいないかにより テーブル2のオブジェクト(テキスト、ラジオボタン、チェックボタン)の内容を全てクリアしたいのです。 テキストは中身を消して、ラジオボタン、チェックボタンはチェックを はずしたいということです。 テーブル1はそのままで、テーブル2のみ初期状態にしたいのです。 まとめてクリアしたいのですが、出来ないのでしょうか?

  • フレーム間オブジェクト参照

    フレームを使ったページで、 親フレームの中に、A,Bという2つのフレームを作り、 直接AのURLを入れても、エラーを出したいのですが、 どういう作りをしたら良いのでしょうか? 親フレームから見ないとエラー(警告ページに飛ぶなど) にしたいのです。 フレームAから、 フレームB内のテキストボックスを参照できるか否かの ような形でフレームBの存在を知ろうと思ったのですが、 Nullかオブジェクトがないとか言われるので処理が中断 してしまいます。 JavaScriptでオブジェクトの値を参照した時に、オブジェクト がないとかの判断ができるプロパティ等があればいいのですが。 JavaScriptでできますでしょうか?

  • itunesのライブラリについて質問です。

    この度、PCを交換し、以前使っていたPCのiTunesMusicフォルダの中身のフォルダのみを全てコピーして、新しいPCのiTunesMusicフォルダに移しましたが、その後にiTunesを開いてライブラリを見ても以前のデータが見えません。 これは何故なのでしょうか? iTunesのライブラリが参照にしている場所にフォルダを移したので、見た目上はiTunesを使って曲をライブラリに保存したのと同じだと思ったのですが、浅はかだったのでしょうか? どうすれば、iTunesのライブラリに以前のデータが現れるのでしょうか? また、プレイリストにiTunesMusic内のフォルダ名ごとのリストを一括で作成することはできないでしょうか? (現在iTunesMusicフォルダには以前作ったプレイリストのリスト名ごとのフォルダを入れています。) 何とぞ知恵を御貸し下さい。 宜しくお願い致します。