外部テーブルのフォーマットが正しくありません access リンクテーブル

外部テーブルのフォーマットが正しくありません access リンクテーブル

Access のテーブルを作成する方法や、テーブルにデータ (レコード) を追加する方法はいくつかあります。
今回は Access の既存のテーブルに、Excel ブックで管理しているレコードをインポートする方法についてご紹介します。

Access のデータベースに、[T_更新情報] テーブルがあり、現在レコードはゼロです。
ここに下の図の Excel ブックの 3 レコードをインポートしたいと思っています。

外部テーブルのフォーマットが正しくありません access リンクテーブル

外部テーブルのフォーマットが正しくありません access リンクテーブル

Access のテーブルと Excel ブックのワークシート上にあるデータのフィールド名とその順序は同じにしてあります。
フィールド名が同じであれば、フィールドの順序は違っても問題ありません。また、一部のフィールドだけしか Excel ブックにない (たとえば Access では 5 つフィールドがあるけど、Excel には 3 つしかフィールドがない) という場合も、フィールド名さえ同じなら問題ありません。

Excel ブックはもちろん保存してあります。

Excelデータのインポート

  1. リボンの [外部データ] タブの [インポートとリンク] グループの [新しいデータソース] をクリックし、[Excel] をクリックします。

    バージョンやアップデートの状態によっては、[インポートとリンク] グループに [Excel] と書かれたアイコンがあるかも。
    その場合はそちらをクリックしてください。

    外部テーブルのフォーマットが正しくありません access リンクテーブル

  2. [外部データの取り込み] ダイアログ ボックスの [参照] をクリックし、インポートしたいデータが含まれる Excel ブックを指定します。

      [レコードのコピーを次のテーブルに追加する] をオンにして、右側のドロップダウン リストでインポートしたい Access のテーブルを選択して、[OK] をクリックします。

    外部テーブルのフォーマットが正しくありません access リンクテーブル

  3. [スプレッドシート インポート ウィザード] が表示され、選択した Excel ブックの内容がプレビューされます。

      [次へ] をクリックします。

    外部テーブルのフォーマットが正しくありません access リンクテーブル

  4. 次の画面で [インポート先のテーブル] にテーブル名が正しく指定されていることを確認して [完了] をクリックします。

    外部テーブルのフォーマットが正しくありません access リンクテーブル

  5. [外部データの取り込み] ダイアログ ボックスの [閉じる] をクリックします。

    外部テーブルのフォーマットが正しくありません access リンクテーブル

  6. 指定したテーブルに Excel ブックのデータがインポートされます。

    テーブルを開いて確認してください。

    外部テーブルのフォーマットが正しくありません access リンクテーブル


なんで突然このテーマにしたかというと、「Excel ブックの内容で Access のテーブルを書き換えたい」といわれたからです。
気持ちはわかるけど、製品をまたぐにはそれなりの技術が必要になるので、いったん Access に更新情報を格納するテーブルを用意して、そこに Excel のデータをインポートし、そのテーブルを使って別のテーブルを更新するほうがわかりやすいのではないかと思いまして。

[T_更新情報] テーブルの内容を使って、[T_社員] テーブルを更新するという流れの更新クエリについては、別の記事で書いています。

石田 かのこ

オススメ!四国の逸品

外部テーブルのフォーマットが正しくありません access リンクテーブル
執筆

外部テーブルのフォーマットが正しくありません access リンクテーブル

一般社団法人 実践ワークシート協会

石田 かのこ

Office 全般のスペシャリスト。ユーザー向けトレーニングの実施や書籍執筆、オンライン記事の執筆、インターネット授業などを行っている。

Access2010って、なんだかエラーメッセージが多い気がします。

以下は、私がエラーメッセージが出たときに対処した方法です。

私の環境のもとで解決できたことで、すべてに適応できるとは思いませんが何らかのヒントになれば幸いです。

エラーメッセージが出たら、まず、メッセージウィンドウに表記されている文言で検索してみてください。たいていはヒットします。

データベース形式に対応していない変更が含まれています

フォームを作成して、そのフォームにフォームを閉じるボタンを作成しようと、コマンドボタンウィザードを使用して作成して保存しようとしたら、下のようなメッセージが表示されて保存もできない。

イベントのクリック時に[DoCmd.close]と、入力しても同じメッセージが表示されます。

このフォームまたはレポートには、現在のデータベース形式に対応していない変更が含まれています。

フォームまたはレポートは保存されませんでした。

変更を保存するには、空白のセルがあるレイアウトを削除するか、フォームまたはレポートの"HasModule/コード保持"プロパティを[いいえ]に設定してください。

メッセージの通りに[コード保持]を[いいえ]にしたら、コードは削除されてしまいます。

解決策

マクロで[ウィンドウを閉じる]アクションを作成して、それをボタンのクリック時イベントで指定して解決しました。

ウィンドウを閉じるマクロの作成

マクロの新しいアクションの追加で、[ウィンドウを閉じる]を選択します。

マクロの各設定をして、名前を付けて保存します。

フォームのコマンドボタンを選択して、クリック時イベントに作成したマクロを指定します。

この方法だと保存して作成することができます。

[最適化と修復]を実行しても直らなかったケース

最適化と修復を実行しても解決できなかったケースもあります。

参考最適化と修復については、以下の記事で解説しています。

イベントプロパティに指定した式 クリック時 でエラーが発生しました

フォームを作成して、そのフォームにフォームを閉じるボタンを作成しようと、コマンドボタンウィザードを使用して作成して保存しようとしたら、下のようなメッセージが表示されて保存もできない。

マクロを作成しても同じです。

[最適化と修復]を実行しても同じです。ほとほと困ってしまいました。

イベントプロパティに指定した式 クリック時でエラーが発生しました。

○○がOLEサーバーまたはActiveXコントロールと通信しているときにエラーが発生しました。

*マクロ名、ユーザー定義関数名、[イベントプロシージャ]以外の式が指定されています。

*関数、イベント、マクロの評価でエラーが発生しました。

オブジェクトまたはクラスがこのイベントをサポートしていません

フォームにコマンドボタンを作成して、そのボタンでフォームを開くように作成していました。

オブジェクトまたはクラスがこのイベントをサポートしていません。

外部テーブルのフォーマットが正しくありません access リンクテーブル

検索すると、Officeの共存が原因で起こることがあるようです。

職場でOffice2013から、365へ移行したときに発生しました。

一時的には、以下の解決策(新規データベースへすべてのオブジェクトをインポート)で対応できたのですが、編集のたびに表示されるようになったので、マクロアクション[エラー時]を追加して対応しました。

[エラー時]アクションは、エラーを回避して次へ進ませることができます。以下の記事でも[エラー時]アクションを使用する方法を紹介しています。

解決策

新しいファイルを作成して、すべてのオブジェクトをインポートして解決しました。

新規データベースへすべてのオブジェクトをインポート

新規ファイルを作成して[外部データ]タブの[インポートとリンク]グループから[Access]をクリックします。

[外部データの取り込み]の[参照]ボタンからエラーが出るファイルを指定します。

[現在のデータベースにテーブル、クエリ、フォーム、レポート、マクロ、モジュールをインポートする]を選択します。

[OK]ボタンをクリックします。

[オブジェクトのインポート]の各タブで[すべて選択]ボタンをクリックして、[OK]ボタンをクリックします。

最適化を実行してもサイズが小さくならないような場合も、上記の方法が有効です。

参考以下のようなエラーメッセージがでることもあります。これは、Microsoftから解決策が提供されています。

レコードは削除されています

Acceess2019でテーブルをコピーしようとすると、以下のメッセージが表示されました。

レコードは削除されています。

外部テーブルのフォーマットが正しくありません access リンクテーブル

テーブルを別のデータベースにエクスポートしようとしても、同じメッセージがでます。

Excelにはエクスポートできたので、一度Excelにエクスポートして、それを新しいテーブルとしてインポートしてテーブルを作成してOKとなりました。

SELECT INTO ステートメントでは複数値を持つフィールドは使用できません

添付ファイル型のフィールドを含むテーブルを基に[テーブル作成クエリ]を実行しようとすると、以下のメッセージが表示されました。

SELECT INTO ステートメントでは複数値を持つフィールドは使用できません。

以下の記事に記しています。

定義XMLによるスキーマの確認が失敗しました

Access2010で、Excelのワークシートからインポートしようと、[外部データ]タブの[Excel]をクリックして、ウィザードに従って進めていたのですが、以下のメッセージウィンドウが出てインポートできませんでした。

定義XMLによるスキーマの確認が失敗しました。XMLドキュメント行にエラーがあります。

ブックのファイル名に、ドットがあると表示されます。

以下の記事で解説しています。

あいまいな外部結合が含まれているので、SQLステートメントを実行できません

クエリのデザインビューで結合プロパティを設定しているときに表示されることがあります。

複数の結合プロパティで、異なる設定の場合に表示されます。

あいまいな外部結合が含まれているので、SQLステートメントを実行できません。いずれかの結合を最初に実行するために、第一次結合を実行する分割クエリを作成し、SQLステートメントにそのクエリを含めてください。

外部テーブルのフォーマットが正しくありません access リンクテーブル