質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

2回答

19566閲覧

Access 2002 で作成されたmdbをAccess 2016 に移行したい

kouji-t

総合スコア10

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2017/05/03 09:34

編集2017/05/04 04:34

Accessの移行について、教えて頂けないでしょうか。

###前提・実現したいこと
Access 2002(32ビット版)で作成されたmdbを、Aaccess 2016(32ビット)で動作させる為に移行したいです。

2017/5/4 9:35 追記
下記で行ったmdbをaccdbに変換する方法に間違いがありましたらご指摘頂けないでしょうか。

Access 2010(32ビット) で、mdbをaccdbに変換、mdeはaccdeに変換させました。
mdeを参照していた所は、accdeを参照するようにVisual Basic of Applicationsで修正しました。
Access 2010上では動作するようになりました。

###発生している問題・エラーメッセージ
Aaccess 2016で、そのaccdbを動かそうとすると、エラーが発生して実行できない状態です。

「指定した式に、MicrosoftAccessが見つけることができない関数が含まれています。」

とポップアップが表示されて、OKボタンを押すと

マクロのシングルステップ autoexec プロシージャーの実行で エラー2425

が発生しているとポップアップが表示されます。

autoexecの記述もなく、マクロで呼び出されている記述が見つかりません。
どこから呼び出されているかわかっておらず、表示されているFunction名で
起きている所は確認しました。
DoCmd.RunCommand(acCmdAppMaximize)
という処理が1行のみでした。

気になっているのが、Function名、Sub名に日本語が使用されており
日本語の関数名を使用した旧Accessで作られたmdbを変換すると、エラーの原因になると
書いている記事を見つけました。これがエラーの要因でしょうか。

全マクロ停止ボタンを押して、エラーのポップアップを閉じると
「Visual Basic of Applications のプロジェクトが破損しています。」
というメッセージが表示されて、Visual Basic EditerでVBのコードが開くことができません。

###試したこと
autoexecでエラーが発生している、Functionの中にある
DoCmd.RunCommand(acCmdAppMaximize)をコメントアウト化したが、エラーはかわりませんでした。
Functionの戻り値をBooleanから、Objectに変更する方法を試しましたが、エラーはかわりませんでした。

2017/5/4 9:35 追記
現在は、最初に起動するaccdbの参照しているファイルを1つずつ解析を行って
autoexecを呼び出している箇所と特定する作業をしております。

###補足情報(言語/FW/ツール等のバージョンなど)
開発している環境:Windows Xp Pro(32ビット) Sp3
Access2002と、Access2010をインストールしてmdbを、accdbに変換する作業を実施。
複数のmdbで構成されていてmdbから、他のmdb呼び出し毎にAccessを新規で起動させて動作する
設計になっています。

動作テスト環境:Windows 10 Pro(64ビット)
Access 2016をインストールして、上記で変換したaccdb一式をコピーしてテストを実施。
エラーが出ていて実行に至っておりません。

よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/04 01:23

Access 2016は64ビット版でしょうか、OS/Accessともに32ビット版ならいかがでしょうか。
kouji-t

2017/05/04 04:45 編集

ご指摘ありがとうございます。Access 2016 は32ビット版を使用しております。Windows 10 Pro 64ビットです。mdb→accdbの変換に利用した、Access 2010は32ビット版です。 環境のビット数の確認はしておりませんでした。OSの32ビット版は試していないので、環境を用意して試してみます。ありがとうございました。 追記 手元に32ビットのWin 10 Proがないので明日、出勤する予定なので試させて頂こうと思います。
kouji-t

2017/05/05 06:35

Windows 10 Pro 32ビット版、Access 2016 32ビット版で実行をしたところ、エラー無しで起動し動作することができました。OS/Access 32ビットで構築していこうと思います。指摘、ありがとうございました。
guest

回答2

0

経験上ですが、MDBのバージョンを上げ、業務的な処理は何も変更を加えない、という対応は簡単そうに見えてかなり工数がかかります。その覚悟の上で対応が必要です。

回答になるか分かりませんが、ヒントになれば。

1.accdbをデザインモードで開いてみてはどうでしょうか。現象は同じでしょうか。参考

2.autoexecは、通常はマクロに登録されており、ACCESSの起動時に自動的に呼び出され、何らかの処理を呼び出します。「無かった」とのことですがマクロは確認されましたか?確か2010ぐらいまではautoexecは問題なく動作していたような気がしますが・・、動かなくなってしまったのかもしれませんね。参考

まず、autoexecの定義箇所を見つけ、それを無効にすることで、次のステップに進める可能性があると考えています。

投稿2017/05/03 13:00

akabee

総合スコア1947

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kouji-t

2017/05/04 00:33

ご回答ありがとうございます。処理の変更行わずMDBのバージョンアップする目標は工数がかかることと認識致しました。 1.デザインモードで起動すると「指定した式 〜業務メニュー(画面の名前)が 見つけることができない関数名が含まれています。」と表示されて、フォームは表示されない、作成タブのVisual Basicボタンを押しても何も反応しない、マクロは マクロ1という何も記述がない(Access 2010と同一)の状態です。 ご存知でしたら教えて頂きたいのですが、私が行ったmdb→accdb変換の手順は一般的な方法として 正しいでしょうか。 2.最初に起動させるaccdb(変換前のmdb)のマクロは確認致しましたが、記述はありませんでした。参照している標準モジュール、accdeの中からの解析は終っておりませんでしたので、autoexecの定義箇所を捜索したいと思います。 ご回答ありがとうございました。
akabee

2017/05/04 01:58

1.こちら(MS公式サポート)の情報によると、その方法で特に問題ないようですね。 https://support.office.com/ja-jp/article/-accdb-%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%BD%A2%E5%BC%8F%E3%81%AB%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%82%92%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B-69abbf06-8401-4cf3-b950-f790fa9f359c 「見つけることができない関数名が含まれています。」というのはかなり怪しいですね。ファイルとして破損してしまっているように思います。autoexecはACCESS2010では実行されないのですか?実行されているかも不明ですか? m6uさんが修正・追記依頼されていますが、OS、ACCESSの32bit、64bitが問題に関わっていませんか?
kouji-t

2017/05/04 04:42

ご回答、資料のURLありがとうございます。変換は問題ないことがわかり、1つ問題が解消ができました。 Access 2010で起動すると、エラー表示なくフォームが起動し操作することができました。 Access 2010 → Access 2016でエラーが発生しています。 Access 2016で解釈できないコード(おそらくautoexec)を、Access 2010で修正して移行 するのが道筋ではないかと考えがまとまり、箇所を探しております。 m6uさんのご指摘ですが、Accessは全て32ビット版を使用しておりましたが テスト環境のOSのみWindows 10 Pro 64ビット版でした。
kouji-t

2017/05/05 06:32

Windows 10 Pro 32ビット版、Access 2016 32ビット版で実行したところエラーが発生せずに動作しました。 今回のmdb(Access 2002 32ビット版)を、大幅な変更なしにWindows 10 Pro 64ビット版、Access 2016 32ビット版で動作させるのは難しいようなので、OS/Access 32ビットで構築しようと考えております。操作、変換の方法についてわかりやすく教えていただきありがとうございました。
guest

0

自己解決

OSとAccessのビット数を合わせることで動作しました。

Windows10Pro 64ビット / Access2016 32ビット → エラーが発生、動作しない
VBAプロジェクトが破損とメッセージ、VBコードが表示できずVBAエディターも表示できない

Windows10Pro 32ビット / Access2016 32ビット → エラー無し、動作する
VBAプロジェクトのエラーメッセージ無し、VBコードが表示できる

今回の移行は32ビットの環境で行いたいと考えております。
環境を一致させるという基本的な所を反省し、次回に繋げたいと思います。

akabeeさん、度々のご回答ありがとうございました。

m6uさんのご指摘がベストアンサーになるかと思いますがつけることができませんので
こちらでお伝えさせて頂きます。ありがとうございました。

投稿2017/05/05 07:22

kouji-t

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問