こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

「.Number」の部分がエラーになる

今までできてたコードがいきなりエラーになりました。アクセス2003です。

Sub エクセルへ出力()
On Error GoTo エラー
DoCmd.OpenTable "T伝票", acNormal, acEdit
DoCmd.RunCommand acCmdOutputToExcel
Exit Sub
エラー:
MsgBox "予期せぬエラーが発生しました。: " & Err.Number
End Sub

というコードなのですが
デバッグすると「.Number」の部分が

『コンパイルエラー
メソッドまたはデータ メンバが見つかりません。 (Error 461)』

となります。
前までは問題なくできてたと思うのですが
何が変わったのでしょうか?
このコードはおかしいですか?

ご教授よろしくお願い致します。

投稿日時 - 2009-07-09 23:45:10

QNo.5112886

困ってます

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

> このコードはおかしいですか?

単純にモジュールに貼り付けた後、デバッグを実行しましたが、
問題なく通りました。
また、フォーム上のコマンドボタンからの呼び出しでも、問題なく
動作することを確認しました。
従って、コード自体の問題ではないと思われます。


> 前までは問題なくできてたと思うのですが何が変わったのでしょうか?

私が思いつくのは、以下の2つです(可能性が高いのは前者):

【第1候補】どこかで、「Err」を変数として宣言してしまっている。
 例えば、標準モジュールで「Public Err As DAO.Database」といった
 宣言をすると、ご質問の件と同じエラーが発生しました。

【第2候補】何らかの参照設定が、VBAよりも優先順が上になっている。
 VBAのメニューで「ツール(T)→参照設定(R)」から開く『参照設定』
 ダイアログでは、「Visual Basic for Application」は最上位に設定
 されていて動かせませんが、何らかのエラーによってこの優先順位が
 変わっていて、そちらに「Err」というメンバが存在し、かつ「Number」
 というメソッド等が存在しなければ、同様のエラーが発生する可能性
 が考えられます。
 (通常使用するErrオブジェクトは、VBAが定義しているものですが、
  それより上位の参照設定に「Err」というものがあると、そちらのメソッド
  内で「Number」が検索されることになるため)

・・・ということで、まずはVBA内で「Err」を完全一致検索(Ctrl+Fキー)して
「Err」を宣言(Dim Err~/Private Err ~/Public Err ~)していないか、
また、『参照設定』で優先順位がVBAより上になったものがないかを、
それぞれ確認してみてください。
(なお、後者の方で、『参照設定』ダイアログ上でVBAの優先順位が
 最上位にできなかった場合(→通常は動かせないようにされている)、
 すみませんが私は対処法を知りませんので、ご容赦願います(汗))

投稿日時 - 2009-07-10 22:57:13

お礼

わかりました!
標準モジュールの名前にErrを使用していました!
おかげで解決しました。
ありがとうございます。参考になりました。

投稿日時 - 2009-07-10 23:59:24

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問