Accessのプロシージャ名が勝手に変わる?回避策はある?

このQ&Aのポイント
  • Accessの古いバージョン(2000)で作られたMDBのアプリがあり、2010で動作検証した際にプロシージャ名が勝手に変わる現象が発生しています。
  • この現象により、同じ名前のプロシージャが複数存在することになり、エラーが発生しています。
  • 回避策は不明ですが、動作環境が無いため確認ができていません。
回答を見る
  • ベストアンサー

Accessのプロシージャ名が勝手に変わります

Accessの古いバージョン(2000)で作られたMDBのアプリがありまして、 それを2010で動作検証しようとした所、MDBを開くところから下記の ようなエラーが出ます。  「イベントプロパティに指定した式 エラー時 でエラーが発生しました:   名前が適切ではありません。 [・・・・(プロシージャ名)] エラーメッセージに表示されているプロシージャ名を元に調べた所、 どうもMDBを開く時に勝手にプロシージャ名が変わっているようなのです。 例えば「Private Sub テキスト1_GotFocus()(1は全角)」が「Private Sub テキスト_GotFocus()」になったり、 「Private Sub データ削除()」が「デー()」になったりします。 勝手に名前が変わったことで、同じ名前のプロシージャが複数存在 することになって、上記のエラーが発生しているようです。 あまり動作環境が無いため試せていませんが、少なくとも2000では正常です。 これは仕様なのでしょうか。 なにか回避策はあるのでしょうか。 何かごぞんじでしたらアドバイス頂ければと思います。 よろしくお願い致します。

  • goram
  • お礼率76% (10/13)

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

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

Windows 7 上の Office 製品を Windows XP SP3 互換モードで実行し VBEditor を開くと、 マクロの全角文字の一部が削除されコンパイル エラーが発生する http://support.microsoft.com/kb/2297924/ja かも? ※なお互換モードで開いているアプリからOffice製品などを開くと たとえOffice製品が互換モードの設定を行っていなくとも 互換モードで開いているアプリから『モードの継承』が行われてしまうので ご注意を。

goram
質問者

お礼

教えていただいたサポート情報で解決出来ました!! MSAccess.exeのプロパティを見るとXP互換モードになっていました。 元ファイルをだめにする寸前でした。 非常に助かりました。 ありがとうございました。

関連するQ&A

  • アクセス コンロール名が勝手に変わります

    フォームにテキストボックスをぐいってやって、名前を「テキスト.1」にしました。 そして、VBAで、 「me.テキスト」と打つと、 me.テキスト_1に変わっています。 「.」と名前を付けたのに、勝手に「_」に変わっています。 本当の名前(コントロール名は)テキスト.1だけど、 Private Sub Form_Load() Me.テキスト_1.Value = "aaa" End Sub を実行したら問題なく出来ました。 どういうことでしょうか?勝手に名前が変わるようになってるのですか?

  • プロシージャー名 全角のアルファベット

    vbaのプロシージャー名に、全角のアルファベットは使えないのですか? Sub ユーザID()  ←全角です とやると、 勝手にSub ユーザID() になってしまうのですが、 この機能を停止する方法はありますか?

  • アクセス コントロール名が変わった

    テキストボックスのコントロール名は「2013年」なのに、 そのコントロールをダブルクリックしてイベントプロシージャーを作ったら Private Sub Ctl2013年_DblClick(Cancel As Integer) End Sub になったのですが、なぜCtlが付いてしまったのでしょうか? 「2013年」というコントロール名はやめたほうがいいですか?

  • access2000でのロジックエラー

    Access97で作成していて、access2000にバージョンアップして動かしたところ下記のエラーがでました。どこを修正すればよいか教えてください。 イベントプロパティに指定した式エラー時でエラーが発生しました。オブジェクトまたはクラスがこのイベントセットをサポートしていません。 *マクロ名、ユーザー定義関数名、[イベントプロシージャ] 以外の式が指定されています。 *関数、イベント、マクロの評価でエラーが発生しました。 Private Sub cmdSansyo_Click() ctlCommonDialog.InitDir = "c:\My Documents" ctlCommonDialog.fileName = "Zai30.MDB" ctlCommonDialog.Filter = "財務会計システム(Zai30.MDB)|Zai30.mdb" ctlCommonDialog.FilterIndex = 2 ctlCommonDialog.ShowSave [保存元] = ctlCommonDialog.fileName End Sub

  • アクセスからエクセルのプロシージャーを実行させたい

    オフィス2007です。 ////////////////////////////////////////////////////////// ‘Excel側の標準モジュール ////////////////////////////////////////////////////////// Sub Excelのプロシージャー() MsgBox "Excelです" End Sub ////////////////////////////////////////////////////////// ‘Access側の標準モジュール ////////////////////////////////////////////////////////// Sub Accessのプロシージャー() Dim xlsWB As Object Dim MyFileName As String MyFileName = "D:\Accessからプロシージャーの実行テスト用ファイル.xlsm" Set xlsWB = GetObject(MyFileName) xlsWB.Application.Run xlsWB.Name & "!Excelのプロシージャー" Set xlsWB = Nothing End Sub の状態で、アクセス側から Accessのプロシージャー実行すると、 ////////////////////////////////////////////////////////// マクロ'Accessからプロシージャーの実行テスト用ファイル.xlsm!Excelのプロシージャー' を実行できません。 このブックでマクロが使用できないか、 またはすべてのマクロが無効になっている可能性があります。 ////////////////////////////////////////////////////////// となります。 エクセル側は、「すべてのマクロを有効にする」にしているし、エクセルファイルを単独で開き、 Excelのプロシージャーを実行すると問題なく動きます。 同じ条件で、2003で検証すると問題なく動きます。(拡張子は適宜変えてます) エクセルのパスが間違ってるのかな?と思い、適当なパスに変えたところ、 「オートメーション操作中にファイル名またはクラス名を見つけられませんでした。(Error 432)」 というエラーがでたので、パスは合ってます。 原因がわかる方、ご回答よろしくお願いします。

  • Changeプロシージャでのトラブル?

    以下のコードでトラブル中です。 Private Sub text1_Change() If Len(text1.Text) = 6 Then text2.SetFocus End Sub 1:プログラムを実行し、手動でtext1に6文字入力すると一切のエラーは発生せずtext2にフォーカスが移ります。 2:プログラムを実行し、コードでtext1に6文字代入すると実行時エラー5(プロシージャの呼出、または引数が不正です。)が発生し、フォーカスは移りません。 いずれの場合もtext2のEnabledはtrueで、入力文字は半角数字です。 原因がわからない為、コードでの文字代入ができなくて困っています。 なぜなのかまったくわかりません。 よろしくお願いします。

  • Access(VBA)のエラー処理

    いつもお世話になりますm(__)m Access2003(VBA)のエラー処理について教えて下さい。 いつも、エラー処理は、各private sub毎に記述しています。 例えば private sub A() on error goto ErrShori (処理など) exit sub ErrShori: (エラー処理) end sub private sub B() on error goto ErrShori (処理など) exit sub ErrShori: (エラー処理) end sub 上記のようにしていますが、エラー処理は共通で、どうにか1つの記述(?)で全てのプロシージャに対してエラー処理が出来ればと思っています。 いろいろ調べましたが見あたらず、今は一つ一つのプロシージャに「on error...」と書いています。 MDBファイル単位で「エラーがあるとこれを実行」のような共通のエラー処理を実装する事は出来ないのでしょうか? お詳しい方、是非ご教授下さい。可能であればサンプルを記述頂くと助かります。 宜しくお願い致しますm(__)m

  • プロシージャ名の取得

    教えてください。 VBで現在実行しているプロシージャ名を取得指定のですがkのようなことは可能ですか? 可能ならばどのようにすればいいか教えてください。 現在実行ファイルにて起動しているのですが、どこかで「実行エラー」が発生しています。 この実行エラーの場所の特定のために、現在起動中のプロシージャ名をログに保存しようかと考えています。 また、その他このようなエラー箇所特定方法などがありましたら教えてください。 環境:VB6.0  Win2000

  • 簡単なプログラムにまとめる方法

    前回、同じようなプログラムを簡単にまとめる方法を教えて頂いたのですが新しい事で困ってしまいました。 説明が非常にへたくそなので、プログラムをそのまま書きます・・・・ スイマセン Private Sub TextBox1_1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1_1.GotFocus Me.TextBoxNum.Text = "1" End Sub Private Sub TextBox2_1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2_1.GotFocus Me.TextBoxNum.Text = "2" End Sub Private Sub TextBox3_1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox3_1.GotFocus Me.TextBoxNum.Text = "3" End Sub 上記のプログラム、TextBox○○○_1.KeyPressの○○○の部分が1から100まであるのですが、あまりにも行数が多くなって長くなるので、以下のプログラムで纏めたのですが、 Me.TextBoxNum.Text = "○○○" にフォーカスされたTextBox○○○_1の○○○を入れる方法はありますか? Private Sub TextBox1_1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1_1.GotFocus,TextBox2_1.GotFocus,TextBox3_1.GotFocus Me.TextBoxNum.Text = "○○○" End Sub 説明が下手くそでスイマセン、ほかに新しい方法でも有ればお願いします よろしくお願いしますm(__)m

  • エクセルからアクセスのプロシージャーを実行させるには?

    エクセルの標準モジュールには→エクセル側のプロシージャー アクセスの標準モジュールには→アクセス側のプロシージャー と言う名前のプロシージャーが作成されています。 これをどちらもエクセル側で実行させることは出来ないでしょうか? 「アクセス側のプロシージャー」ではアクセス側の処理が実行されます。 でもできればエクセル側のコマンドボタンを一回押すだけで エクセルとアクセスの両方の処理を実行させたいです。 エクセルの標準モジュールには Sub エクセル側のプロシージャー() Call アクセス側のプロシージャー End Sub これを実行すると コンパイルエラーになります。 どうすれば一度で二つのアプリケーションのプロシージャーを実行させることが可能でしょうか? よろしくお願い致します。

専門家に質問してみよう