1つのAccessファイル内にテーブルとフォームが存在する構成となっている場合、Accessシステムに何らかのエラーが発生しデータが壊れてしまうと、リカバリーに少々手間がかかります。
そこで一般的には、テーブルとテーブル以外(フォーム、クエリ、レポート等)の2つにファイルを分離することが行われます。こうすることで、何かAccessに問題が発生した際にリカバリーがしやすくなります。
テーブル用ファイルとフォーム用ファイルを別ファイルとして分離した場合のイメージは上記右側のような構成となります。リンクテーブルで2ファイルは繋がっているため、データに対して何か破損が発生したような場合、テーブル用ファイルのみを入れ替えればすぐに動くようになります。(定期的にバックアップしておいたテーブル用ファイルと入れ替えれる)
Accessシステムを利用している場合、上記のようにデータとそれ以外のファイルを分離しておいたほうが無難です。
では、Accessをテーブル用ファイルとそれ以外のファイルに分割するにはどうするのか?
テーブルを別のAccessファイルに分離する場合によく使用されるのがデータベース分割ツールです。大抵はこの機能を用いることで特に問題なくファイルの分割をすることができるのですが、たまに次のようなエラーが発生し、うまくファイルを分離できないことがあります。
システムで予約されているエラー(-1524)です。このエラーに対するメッセージはありません。
メッセージを見てもよくわからないエラーが出ます。このエラーは記事投稿の2021年5月時点、ググってみたのですが、解決方法や原因が詳しく載っているページはほぼ見つかりませんでした。
そこで今回は、この「Accessデータベース分割ツールで1524エラーが出た場合の解決方法」についてまとめてみました。
データベースの分割を行おうとした際に1524エラーが出て先に進めないという場合、本記事が参考になると思います。
Accessデータベース分割ツールによるテーブルの分離
Accessファイル内のテーブルを別Accessに分離する場合、Accessに用意されているデータベース分割ツールという機能を使用することで簡単に別ファイルにすることが可能です。
まず、リボンから「データベース ツール」→「Accessデータベース」をクリックします。
すると、データベース分割ツールのウィザード画面が表示されます。
色々と説明文が書いてありますが、ここでの注意点は1つで、処理実行前にファイルをバックアップしてね、ということです。
説明文を読まずにすぐに「データベースの分割」ボタンは押さないようにしましょう。
バックアップすればいいので、ファイルをコピーして別の場所に保存しておけばOKです。
ファイルバックアップ後、再度データベース分割ツールのウィザード画面を開き、「データベースの分割」ボタンをクリックすると、保存先を選択するダイアログが表示されます。
ファイル選択ダイアログの初期表示はおそらくドキュメントフォルダが表示されていると思いますが、ここでは分割前のAccessファイルと同じフォルダに分割後のファイルを作成することとします。
ファイル名の初期値は「<<分割前のファイル名>>_be.accdb」となっていますが、ここは自由に変更してもOKです。
分割ボタンをクリックすると、分割処理が行われます。処理が正常終了した場合、
- 「<<分割前のファイル名>>_be.accdb」のほうにテーブルがコピーされる。
- 分割前のファイルの中からテーブルが無くなる。代わりにリンクテーブルが作成される。
という状態となります。
しかし・・・このエラーが出てきた場合、うまくデータベースの分割ができずに異常終了となっています。
原因不明な「システムで予約されているエラー(-1524)」
システムで予約されているエラー(-1524)です のエラーが表示された場合にどうなるかというと、
- 分割後のファイル(<<分割前のファイル名>>_be.accdb)は作られている
- しかし全てのテーブルが分割後のファイルに作られているわけではない
- 分割前のファイルにリンクテーブルが作られていない
というような状態になります。
つまり、中途半端に処理されてAccessファイルの分割が中途半端な状態となってしまっています。
「システムで予約されているエラー(-1524)」のダイアログでOKボタンをクリックすると、データベース分割ウィザードが開いたままの状態となっているため、再度分割ボタンをクリックしたくなるのですが、クリックしても結果は同じで、再度「システムで予約されているエラー(-1524)」のダイアログが表示されます。
分割ツールを使用してのファイル分割が何らかの原因でできないという状態となってしまいました。
Accessデータベースのインポートからファイル分離
データベース分割ツールを利用してのファイル分割ができないとなった場合、「まずこのエラーの原因を特定してエラーを取り除き、再度データベース分割ツールを使って処理しよう」という考えになります。
私の場合もそうでしたのでエラー番号やエラーメッセージでググってみたのですが・・・中々これだ!というものが見つからず、ググっただけでは原因特定には至りませんでした。
原因の特定ができないため先に進めません・・・。
悩んでいても解決しないため、別の方法でファイル分割をすることにしてみました。
データベース分割ツールで行なわれている処理を考慮すると、次の作業を行えばできると考えました。
- テーブルのみ格納するファイル(分割先ファイル)を新規作成する
- 分割元ファイルからテーブルのみを抜き出し、分割先ファイルに移動する
- 分割元ファイルから分割先ファイルへリンクテーブルを貼る
テーブル用ファイルの新規作成
まず、テーブルを格納するためのAccessファイルを新規作成します。
Accessファイルを開き、リボンから「ファイル」→「新規」→「空のデスクトップデータベース」を選択します。
ファイルの保存先は、分割前ファイルと同じ場所を指定します。ファイル名は何でもOKです。
テーブル用ファイルにテーブルをインポート
次に、テーブル用ファイルにテーブルとデータを取り込みます。
ここでは、データベースのインポート機能を使用して行います。
テーブル用ファイルを開き、リボンから「外部データ」→「Access」をクリックします。
外部データの取り込みウィザードが表示されますので、ファイル名の部分の参照ボタンをクリックして分割前ファイルを指定後、OKボタンをクリックします。
オブジェクトのインポート画面が表示されますので、テーブルタブ内に表示されているテーブルを全て選択(システムファイルを除く)し、OKボタンをクリックします。
すると、再度「システムで予約されているエラー(-1524)です」のメッセージが表示されます。
OKを押すとエラーが出ているテーブル以外はインポート処理が行われますので、そのまま最後まで処理を進めます。
インポート処理から、どうやら特定のテーブルで「システムで予約されているエラー(-1524)です」が発生しているようだということが分かりました。
ではどのテーブルでエラーが出たかを確認するか?
インポート処理後に「名前の自動修正保存エラー」というテーブルが自動生成されていますので、このテーブルを開いて中身を確認します。
中身を見ると、オブジェクト名列にエラーが発生したテーブルの名前が表示されていることが分かります。
どうやらこのテーブルが何か悪さをしているようです。
次に、分割前ファイル内にあるこのテーブルを直接開いてみました。しかし、エラーは特に発生せずテーブルの中身を見ることができます。
ということはテーブル内のデータが何か悪さしているなと思い、
- 分割後ファイルに、対象テーブルのテーブル構成だけまず作る(データは入れない)
- データをコピペして分割後ファイル内の対象テーブルに張り付ける
という操作を行ってみました。
1については、テーブルをコピペして分割後ファイルに作成します。注意点は下記のように「テーブル構造のみ」を選択します。
2の操作では、テーブルを開いて全選択→コピーを行った後、分割後ファイルの対象テーブルを開き貼り付けを行います。すると再度同じエラーが発生します。
OKをクリックすると次のメッセージが出ますので、はいを押します
最後にレコードの貼り付け確認メッセージが表示されますので、「はい」をクリックします。
これでデータの移動は完了です。
元テーブルと件数を比較したところ、差異は1件でした。どうやらレコード内のあるデータが悪さをしていて「システムで予約されているエラー(-1524)です」が出ていたようでした。
どのレコードかは調べることができるかと思ますので、対象データに対して文字を入力しなおすか、そのレコードは削除するかの方針を決めればよいかと思います。
分割元テーブルにリンクテーブルを作成
最後に、分割元ファイルからテーブルを削除し、分割先ファイルのテーブルに対してリンクテーブルを貼ります。
以上でファイル分割は完了です。
まとめ
Accessデータベース分割ツールで1524エラーが出た場合の解決方法についてをまとめてみました。
私の場合、エラーの原因となるものがデータの中に含まれていたため、そのデータを除外することで解消しました。
データベース分割ツールではエラーが発生して進まない場合、今回の方法を是非お試しください。
また、この記事に書いたようなちょっとした困ったことでも、自分に経験や知識が足りないために対応できなかったり、時間をかけたわりに全然進まなかったりと、思うようにいかない事ってありますよね。そんなときは専門家に相談したり解決してもらったりする方法もありますので、一人で悩まず対処してみましょう。