ACCESS2000でテーブルとフォームを作っていたら下記のエラーメッセージが出てきました。
「実行時エラー'2001';直前の操作はキャンセルされました。」
その後、
「イベントプロパティに指定した式 クリック時でエラーが発生しました:モジュールがありません。※マクロ名、ユーザー定義関数名、[イベントプロシージャ]以外の式が指定されています。※関数、イベント、マクロの評価でエラーが発生しました。」
というメッセージもでてきました。また、フォームが開かなくなり誤作動をし始めたのですが原因がわかりません。どなたか回避策をご存知ないでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

#1です。


一応、私が参考にしたMicroSoftのページを貼り付けておきます。

参考URL:http://www.microsoft.com/japan/support/kb/articl …
    • good
    • 0
この回答へのお礼

ありがとうございました。しかし、回避策を何度も試みたのですがフォームの破損がひどくなる一方でどうしようもない状態になりました。回避策のインポート時にもエラーメッセージ「既存のモジュール、プロジェクト、オブジェクト ライブラリと名前が競合しています。」が発生し、モジュール画面が開かなくなってしまいました。手の施しようがないのでVBで作ることにします。(VBはじめてなので、できるか心配・・・)ホント、ありがとうございました。何が原因かもわからず悩んでいたのですっきりしました。

お礼日時:2002/03/01 10:52

私も同じ状況になりました。


で、いろいろ調べたところ、何かのバグらしいです。
私の場合は、下記手順で復旧できました。お試しあれ。

・新しい(空の)データベースファイルAを作り、開く。
・(Aの)ファイルメニューの外部データの取り込みからインポートを選択
・元のデータベースファイルを選択
・テーブルとフォーム(クエリ、レポートなどあればそれも)をすべて選択
・オプションで、テーブルのインポートのところで、「テーブル構造とデータ」をチェックし、OKでインポート実行

後は、必要なら新しく作ったデータベースファイルと元のデータベースファイルのファイル名を変更する、で新しく作ったデータベースの方を使います。

←必ずしも復旧できる訳ではないので、自信なしにしておきます。
    • good
    • 0
この回答へのお礼

ありがとうございました。
試したのですが、復旧は無理でした。。。こんなバグがあるとACCESSを使うのが億劫になりますね。(ーー;)

お礼日時:2002/03/01 10:55

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QACCESSのモジュールエラー?

昨日まで普通に起動していたのですが、
今日になり「モジュールがありません!」
というメッセージが表示されます。

で、OKを押すとVBAの画面が表示されます。

具体的にどこをどう確認すればなおるのかわかりません。

どなたかアドバイスお願いします。

Aベストアンサー

mdbが破損した確立が高いです。
どこが破損しているのか不明ですが
>OKを押すとVBAの画面が表示されます。
とのことなのでプロジェクトレベルの破損とも考えられます。
>具体的にどこをどう確認すればなおるのか
まずツールのデータベースユーティリティで修復をしてみる。
VisualBasicEditorを開きデバッグでデータベースのコンパイルをしてみる。
それでもメッセージが出るようならデコンパイルしてみる。
デコンパイルはAccessを終了して[スタート]→[ファイル名を指定して実行]でAccessのexeフルパスとコマンドを入力しOKボタンで実行してみてください。
バージョンが質問からでは分かりませんがAccessのexeはAccess2003の場合はC:\Program Files\Microsoft Office\OFFICE11にAccessのexeがあります(確認してください)ので下記のように入力してコピぺでも良いです。
デコンパイルは
"C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.EXE" "C:\フルパス\ファイル名.mdb" /decompile
でデコンパイルできます。
VB関連が損傷しているならこれで直るはずなのですが・・。
それでもメッセージが表示される場合は修復不可という事で・・。
新しいmdbを作って問題のmdbのオブジェクトを新しいmdbへインポートするしかなくなってしまいます。

mdbが破損した確立が高いです。
どこが破損しているのか不明ですが
>OKを押すとVBAの画面が表示されます。
とのことなのでプロジェクトレベルの破損とも考えられます。
>具体的にどこをどう確認すればなおるのか
まずツールのデータベースユーティリティで修復をしてみる。
VisualBasicEditorを開きデバッグでデータベースのコンパイルをしてみる。
それでもメッセージが出るようならデコンパイルしてみる。
デコンパイルはAccessを終了して[スタート]→[ファイル名を指定して実行]でAccessのexeフルパス...続きを読む

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

QACCESS IIF関数 複数条件の設定について

 選択クエリにおいて、あるフィールド「 X」 のレコード数値が
 
  0<[X]<=50   であれば A 
  50<[X]<=100  であれば B 
  100<[X]<=150  であれば C

 と表記させるフィールド「Y」を追加したいと考えています。
 この場合、Yのフィールド設定で指定する数式についてご教授願います。

 一応、
  IIf(0<[X]<=50,"A","") Or IIf(50<[X]<=100,"B","") Or IIf(100<[X]<=150,"C","")

  としましたが、実行すると、Yの列がすべて「-1」と表記されてしまいます。

 何卒よろしくお願いいたします。

Aベストアンサー

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A", [X]<=100, "B", [X]<=150, "C", True, "")


なお、数学あるいは一般生活では確かに「0<[X]<=50」という表記をしますが、
Accessの関数などではこれだと正しい結果が得られません。
正しく認識させるためには、等号・不等号を挟んだ式は、「左辺」と「右辺」の
2つの要素からなる形にする必要があります。
(「0<[X]<=50」は「[X]>0 And [X]>=50」と分割してやる、と)

但し、今回のご質問のような『連続した範囲』であれば、前(左)で既出となる
式の要素で「[X]<=0」が「真(=-1)」とならなかった時点で、「[X]>0」が保証
されますので、上記のように、「[X]>0」を省略して「[X]<=50」だけを条件として
指定すればOk、ということになります。
(「0<[X]<=50」の次が「80<[X]<120」などのように、「50~80」が欠けた
 場合は、省略ができない、と)


【参考】
「0<[X]<=50」は、このままだと「0 < ([X]<=50)」という式と解釈されます。
この場合、「[X]<=50」は、「真(=-1)」か「偽(=0)」か「Null」のいずれかに
なります。
何にせよ、「0<[X]<=50」全体として「正(=-1)」となることがないため、
ご質問の式では、IIF関数は常に第3引数に指定された値「""」を返す
ことになります。

この結果、式全体としては「"" Or "" Or ""」という形となり、「0かNull」
以外なので、「真(=-1)」という値が返された、ということです。

なお、Nullについては、以前、他の方の質問につけた回答も、併せて参考までに:
http://oshiete.goo.ne.jp/qa/4850675.html

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A"...続きを読む

QEXCEL VBAが消失

EXCEL VBAで作ったマクロが、立ち上がらなくなってしまいました。
EXCELを起動すると、『ファイルへのアクセスでエラーが発生しました』というコメントが現れ、その後、『Visual Basicプロジェクトが失われました』というエラー表示が出てきます。
EXCEL自体は立ち上がるのですが、モジュールが消えてしまいます。

復活させる良い方法はないでしょうか?

Aベストアンサー

こんにちは。Wendy02です。

詳しいExcel等の情報がなかったので、一般的な内容を書きましたが、まず、Excel 2002 ということは間違いないですね。

もしかしたら、下位バージョンで作ったVBAコードで、下位バージョンで、デジタル署名を付けていたものを、上位バージョンで開けようとしたのではありませんか?

また、以下にこんな解決策が見つかりました。
http://www.adras.com/Lost-visual-basic-project-in-excel.t633-5.html

非Unicodeプログラムをインストールしたら、マクロを救うことが出来たと書かれています。しかし、この方も書いていますが、それじゃあ、とっても不便なので、他に方法はないですか?と聞いていますね。


http://forums.wugnet.com/office/
-Excel-reports-Error-accessing-file-open-excel-book-ma-ftopict569995.html
(画面の都合で途中で改行コードを入れました)

では、

古いシステムで、Excel 2000でためしに開いてみたら、そのファイルは開き、マクロも動きました、となっています。

その書き込みの紹介先に、News Group のNorman Harker 氏のコメントを紹介しています。

その中で、氏は、Excel修復ソフトを紹介していますね。確か、日本で販売しているものでもあったと思います。ただ、英語バージョンにしろ、国産にしろ、1万円を越える値段のようですね。

http://groups.google.com/group/
microsoft.public.excel.misc/browse_frm/thread/816aca1f6d120cd8
(レイアウトの都合で、改行キーを入れています。)

ここの#3です。

ここに、以下の内容が紹介されています。

http://support.microsoft.com/kb/142117/

WordかWordPad を利用して、Sub かFunctionを検索して拾い出す。

というのがあります。私は、この手のものは成功した覚えがありませんが、今の段階では、こんなところぐらいしか紹介できません。

こんにちは。Wendy02です。

詳しいExcel等の情報がなかったので、一般的な内容を書きましたが、まず、Excel 2002 ということは間違いないですね。

もしかしたら、下位バージョンで作ったVBAコードで、下位バージョンで、デジタル署名を付けていたものを、上位バージョンで開けようとしたのではありませんか?

また、以下にこんな解決策が見つかりました。
http://www.adras.com/Lost-visual-basic-project-in-excel.t633-5.html

非Unicodeプログラムをインストールしたら、マクロを救うことが出来た...続きを読む

QAccess サブフォームでの選択行の取得

こんにちは。

Access初心者です。

サブフォームでテーブルの項目を表示させていますが、
選択された行を取得する方法はありますか?
サボフォームの下の方に現在選択されているレコード数が表示されてますが、その値でかまいません。

調べているのですが、なかなか検討がつきません。
宜しくお願い致します。

Aベストアンサー

フォーム名がフォーム1、サブフォームコントロールの名前がサブフォーム1だとすると、

Forms!フォーム1!サブフォーム1.Form.CurrentRecord

で取得できます。
(「Forms」と「Form」がありますのでご注意下さい)


また、フォーム1にコードを記述する場合であれば

Me!サブフォーム1.Form.CurrentRecord

サブフォーム1へのコード記述であれば

Me.CurrentRecord

という構文によっても、それぞれ取得が可能です。

QACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ

ACCESSで空白のデーターをクエリで判定/識別する方法を教えてください。
EXCELでは空白を""で判定/識別表していますがACCESSではどうなるのでしょうか。

下の例はフィールドに試験番号があればその番号を、空白なら”欠席”と表示しようとしています。
IIf(([試験番号]="空白の場合何を入れる?"),[試験番号],"欠席")

Aベストアンサー

もうひとつの書き方は
式1: IIf([試験番号] Is Not Null,[試験番号],"欠席")
第2、第3引数の、質問の順序にあわせるとこうなる。

Qアクセスで「モジュールがありません」となってしまいます

ACCESS2000を使用しています。
メニュー用のフォームに、データ照会用のフォームを
呼び出すコマンドボタンを追加し、フォームビューに切り替え
試しにクリックしていみたら実行時えら'2001';となりました。
どうみても記述に間違いはないとおもわれるのですが、そうこう
しているうちに」ほかのイベントプロシージャを設定してある
コマンドボタンをクリックすると「モジュールがありません」
(こうなる前までは正常に動作していました)となって動作
しなかったり、照会用のフォームにいたってはデザインビューで
も開かなくなってしまいました。
元に戻すことはできるでしょうか?
助けてください。

Aベストアンサー

enakoさん、おはようございます

モジュールでどのように呼び出しているのか、わかりかねますが、
デザインでも開けなくなってしまったとなると、
Mdbが破損している可能性が考えられます・・・

ツール - データベースユーティリティ - 最適化/修復

を実行してみてください
Mdbが修復されるかもしれません
念のため、今のMdbをコピーしてバックアップをとっておいてから、
実行するのをお勧めします。
(これで確実に修復されるわけではないんですよ。
本当にごく稀ですが逆に壊れることもありますんで苦笑)

QAccessのマクロでモジュールを実行させたい。

Access2002を勉強中の初心者です。

AccessでDB1という名前のデータベースを作成し、その中で、モジュール1というモジュールを作成しました。これを実行するマクロを作成したく、次のようにマクロを作成しました。
マクロのデザイン画面でアクションに「プロージャの実行」を選択、プロージャ名入力覧の右側の...のボタンを押して式ビルダ画面を表示、ここの「関数」フォルダを開いてDB1を選択、表示されたモジュール1を貼り付けてOK。
しかし、このマクロを実行すると、次のエラーとなります。「DB1 指定されたDB1が見つけることができない関数名が含まれています」

根本的に方法が間違っているのでしょうか?
アドバイスをよろしくお願いします。

Aベストアンサー

#1です。

ちょっと時間ができたので、Accessのヘルプで、
 "RunCode/プロシージャの実行" アクション
についてのトピックを見てみました。

結論から言うと、基本的な考え方が間違っているみたいです^^;。

「プロシージャの実行」アクションでは、「Function」プロシージャを指定するようです。
Subプロシージャではエラーになります。


つまりご質問の件では、
「Subプロシージャを呼び出すFnctionプロシージャ」をまず書かなけれえばならない。
そして、マクロのアクションでは、あらためてこのFunctionプロシージャを指定しなければいけません。

Q【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには

バージョン:Access2002

フォーム「frm01」にテキストボックス「tb01」が作ってある場合、
Forms.frm01.tb01.Value="あいう"
とすれば、フォームもコントロールも指定できるのですが、
Dim strTxt As String
strTxt = "tb01"
Forms.frm01.strTxt.Value="あいう"
だと、文字列型変数"strTxt"が展開されないのでフォーム「frm01」のコントロール「strTxt」を探してしまいエラーになってしまいます。

文字列型変数でフォームやコントロールを指定するには、どのようにすればよいのでしょうか?

Aベストアンサー

フォームの場合
 Forms(strFrm)

フォームのコントロールの場合
 Forms(strFrm).Controls(strTxt)


これでも参照できますが、普通ここまで省略しませんね。
 Forms(strFrm)(strTxt)

あとで見たとき、訳がわからなくなりそう。

Qアクセスで#エラーを表示させない方法は?

アクセス2000を使用しています。フォームにテキストボックスを貼り付けて、計算式を入れています。計算できない数値になると、#エラーと表示されます。目障りなので、#エラー という表示を消したいのですが、どうしたらよろしいでしょうか?宜しくお願い申し上げ候。

Aベストアンサー

はじめは「IIF関数とIsError関数を使用して」と考えたものの、IIF関数は引数がエラーになった時点で
エラーが返されてしまう(=元の木阿弥)ので、どうしたものかと思ったのですが・・・
とりあえず、「見た感じ、何も表示されていないように見える」ということで、『条件付書式』での対応と
いうのはいかがでしょうか。

1)当該フォームをデザインビューで開く
2)当該テキストボックスを選択
3)メニューで「書式(O)→条件付き書式(D)」を選択
4)『条件付き書式設定』ダイアログが開くので、『条件1(1)』枠の左端にあるコンボボックスで「式」を選択
5)上記コンボボックスの隣が1つのテキストボックスになるので、そこに以下のような式を入力
 IsError([テキスト0])
 ※上記の式は当該テキストボックスの名前が「テキスト0」の場合です。
6)上記テキストボックスの下、右から2番目に「A」と表示された、文字色を指定するボタンがあるので、
 その左の小さな「▼」をクリックし、当該テキストボックスの背景と同じ色(既定では白のはず)を選択
7)『OK』ボタンをクリックしてダイアログを閉じる

・・・以上です。
これで、『テキスト0』の計算式がエラーになった場合は、文字色が背景と同じ色になるので、「#エラー」と
いう表示はされていないように見える、という状態にすることができると思います。

はじめは「IIF関数とIsError関数を使用して」と考えたものの、IIF関数は引数がエラーになった時点で
エラーが返されてしまう(=元の木阿弥)ので、どうしたものかと思ったのですが・・・
とりあえず、「見た感じ、何も表示されていないように見える」ということで、『条件付書式』での対応と
いうのはいかがでしょうか。

1)当該フォームをデザインビューで開く
2)当該テキストボックスを選択
3)メニューで「書式(O)→条件付き書式(D)」を選択
4)『条件付き書式設定』ダイアログが開くので、『条件1(1)』枠の...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング