ココがダメ
マクロを編集しようとデザインビューに切り替えた途端
に、Accessが強制終了しました!
データベースの修復しようが、他のパソコンの環境でやろうが、Accessのバージョンを変えようが、この現象は回復しません。
ただ、なんかのタイミングでデザインビューで開くことがありますが法則性が分かりません。
また、強制終了すると、ldbの残骸を残したり、勝手にバックアップファイルを作成したりします。
マクロをモジュールに変換
なぜか新しい空のデータベースを作成してマクロをインポートするとデザインビューで開くことができます。
そこで、
ココがポイント
このマクロをモジュールに変換して、元のアクセスに戻して使おう
と考えました。
元のアクセスでは、マクロをデザインビューで開くことができないので、モジュールに変換できないのです。
変換したモジュールをコピー
変換マクロのモジュールは、ファイルのエクスポートして、インポートいう方法もありますが、試しに、2つのデータベースのVisualBasic画面を出して、ドラッグ&ドロップしたらコピーすることができました。
マクロがどこに割り当てられているか不明
せっかくなので、変換したマクロ全部をモジュールに変えようと思いましたが、今になっては、マクロがどこに設定されているのかわかりません。
それなので、修正が発生した時だけマクロを使っている部分を見つけたらモジュールに変更したいと思います。
早速フォームのボタンにマクロを設定した部分を変化モジュールに変更してみたいと思います。
一旦入力されているマクロは消してから、式ビルダーで起動します。
関数から、自分のデータベースを選択すると、モジュールの一覧が出てきます。
そこから、式のカテゴリでマクロ名だった部分を選択すると、式の値の部分で、モジュールが出てきます。
【マクロの設定】openclose04.menu>>accounts 【式ビルダーでの設定】openclose04._menu__accounts
上の図のようになり、モジュールに変更してもマクロと全く同じ動作にすることができました。
式ビルダーからやりましたが、直接手入力でもできますね。
※ドットが、アンダーバー、>>がアンダーバー2個
最初からVBAでやった方が良い!?
ココに注意
自分はコード嫌いな方なので、マクロを使っていました
ところが、マクロが編集できないという致命的なエラーがAccessにはあるようです。
それが、どんな法則で起きるのかが不明な状態なので、自分としては、今後マクロは使わずにVBAで処理をするようにしたいと思います。
今回は、ボタンをクリックして、別のフォームを開くときに、あまりにも遅いのでマクロを修正しようとしたら、Accessが強制終了するという問題になり、このような記事を書くことになりました。
鈍足クエリーが原因だって事がわかりますね。
クエリを見直したいと思います。