Excel ブックのデータのインポートとリンクの設定

Excel ブックのデータのインポートとリンクの設定

Excel ブックのデータはさまざまな方法で Access データベースに取り込むことができます。開いているワークシートのデータをコピーして Access のデータシートに貼り付けたり、ワークシートを新規または既存のテーブルにインポートしたり、Access データベースからワークシートにリンクしたりすることができます。

このトピックでは、Excel のデータをインポートしたり、Access デスクトップ データベースから Excel のデータにリンクしたりする方法について、詳細に説明します。

注記: 

  • ブラウザーで Access 2010 の Web データベースを実行している場合、データはインポートできません。データを Web データベースにインポートする場合は、まず Access を使ってその Web データベースを開く必要があります。

  • リンク テーブルは Access 2010 の Web データベースと互換性がありません。Web データベースの外部データを使うには、データにリンクするのではなく、そのデータをインポートする必要があります。Web データベースの詳細については、「Web で共有する Access データベースを作成する」をご覧ください。

目的に合ったトピックをクリックしてください

Excel データのインポートの概要

Excel データをインポートする

存在しない値または不適切な値のトラブルシューティング

Excel データにリンクする

#Num! などリンク テーブルの誤った値のトラブルシューティングを行う

Excel データのインポートの概要

目標が 1 つ以上の Excel ワークシートのデータを Access に格納することである場合は、ワークシートの内容を新規または既存の Access データベースにインポートする必要があります。データをインポートすると、ソース Excel ワークシートを変更することなく、新規または既存のテーブルにデータのコピーが作成されます。

Excel のデータを Access にインポートする一般的なシナリオ

  • あなたは長年の Excel ユーザーですが、今後は Access を使って Excel のデータを処理したいと考えています。目標は、Excel ワークシートのデータを 1 つ以上の新しい Access データベースに移動することです。

  • 部門やワークグループでは Access を使用していますが、Access データベースに結合しなければならないデータが Excel 形式で送信されることがあります。これらの Excel ワークシートを受信したら、データベースにインポートします。

  • Access を使ってデータを管理していても、チームの他のメンバーから受け取る週報は Excel ブックです。そこで、毎週特定の時刻にデータがデータベースにインポートされるように、インポート プロセスを合理化したいと考えています。

初めて Excel データをインポートする場合

  • Excel ブックを Access データベースとして保存する方法はありません。Excel では、Excel データから Access データベースを作成する機能は提供していません。

  • Access で Excel ブックを開く ([ファイルを開く] ダイアログ ボックスの [ファイルの種類] リスト ボックスで "Microsoft Office Excel ファイル" に変更し、目的のファイルを選ぶ) と、データがインポートされる代わりにブックへのリンクが作成されます。ブックへのリンクは、ワークシートのデータベースへのインポートとは根本的に異なります。リンクの詳細については、この記事で後述する「Excel データにリンクする」のセクションをご覧ください。

Excel データをインポートする

このセクションに記載する手順では、インポート操作の準備と実行の方法、インポート設定を後で再利用するために定義として保存する方法について説明します。手順を進める際、データは一度に 1 つのワークシートからしかインポートできないことに注意してください。ブック全体のすべてのデータを同時にインポートすることはできません。

ワークシートを準備する

  1. ソース ファイルを特定し、Access にインポートするデータを含むワークシートを選びます。ワークシートの一部のみをインポートする場合は、インポートするセルのみを含む、名前付き範囲を定義できます。

    名前付き範囲を定義する (省略可能)   

    1. Excel に切り替え、インポートするデータが含まれているワークシートを開きます。

    2. インポートするデータが含まれているセルの範囲を選びます。

    3. 選んだ範囲内で右クリックし、[範囲に名前を付ける] か [名前の定義] をクリックします。

    4. [新しい名前] ダイアログ ボックスの [名前] ボックスで範囲の名前を指定し、[OK] をクリックします。

      インポート操作を行う際、データは一度に 1 つのワークシートからしかインポートできないことに注意してください。複数のワークシートからデータをインポートするには、ワークシートごとにインポート操作を繰り返します。

  2. ソース データを確認し、次の表に示されたアクションを実行します。

    要素

    説明

    列数

    Access のテーブルでは 255 個を超えるフィールドはサポートされないため、ソース列の数は 255 を超えることはできません。

    列と行をスキップする

    ソースのワークシートや名前付き範囲には、インポートする行や列のみを含めることをお勧めします。

    [行]    インポート操作中に行をフィルターしたりスキップしたりすることはできません。

    [列]    データを既存のテーブルに追加する場合は、操作中に列をスキップすることはできません。

    表形式

    セルを表形式になるよう指定します。ワークシートや名前付き範囲に結合されたセルが含まれる場合、セル内容は左端の列に対応するフィールドに配置され、その他のフィールドは空白になります。

    空白の列、行、セル

    ワークシートや範囲から、空白の不要な列と行をすべて削除します。ワークシートや範囲に空白のセルが含まれる場合は、不足しているデータを追加するようにしてください。既存のテーブルにレコードを追加する場合は、テーブル内の対応するフィールドで Null (不足しているか不明な) 値が許容されていることを確認してください。フィールドの "値要求" フィールド プロパティが "いいえ" に設定され、"入力規則" プロパティが Null 値を許可する設定になっている場合は、Null 値が許容されます。

    エラー値

    ワークシートや範囲の 1 つ以上のセルに #NUM#DIV などのエラー値が含まれる場合は、インポート操作を開始する前に修正します。ソースのワークシートや範囲にエラー値が含まれる場合、テーブル内の対応するフィールドに Null 値が挿入されます。このようなエラーを修正する方法の詳細については、この記事で後述する「存在しない値や誤った値のトラブルシューティングを行う」のセクションをご覧ください。

    データ型

    インポート中のエラーを回避するには、すべてのソース列の全行に同じ型のデータが含まれるようにします。Access は、ソースの最初の 8 行をスキャンして、テーブルのフィールドのデータ型を決定します。ソースの最初の 8 行のどの列にも、異なるデータ型が混在しないようにすることをお勧めします。混在すると、適切なデータ型が列に割り当てられなくなる可能性があります。

    インポート操作を開始する前に、Excel の各ソース列を書式設定し、各列に特定のデータ書式を割り当てるのも、よい方法です。列に複数のデータ型が含まれる場合は、書式設定を行うことをお勧めします。たとえば、ワークシートの FlightNo 列に 871、AA90、171 など数値と文字列値が混在しているとします。存在しない値や誤った値が発生しないようにするには、次の手順を実行します。

    1. 列見出しを右クリックし、[セルの書式設定] をクリックします。

    2. [表示形式] タブの [分類] で、書式を選びます。FlightNo 列の場合は、[文字列] を選ぶのが妥当です。

    3. [OK] をクリックします。

    ソース列を書式設定したが、8 行目より後の行に異なるデータ型が依然として混在している場合、インポート操作ではそれらの値をスキップするか、値を不適切に変換する可能性が残ります。トラブルシューティング情報については、「存在しない値や誤った値のトラブルシューティングを行う」のセクションをご覧ください。

    最初の行

    ワークシートや名前付き範囲の最初の行に列名が含まれる場合、最初の行のデータを Access がインポート操作中にフィールド名として扱うよう指定できます。ソースのワークシートや範囲に名前がない場合は、インポート操作の開始前にそれをソースに追加しておくことをお勧めします。

    注: 既存のデータにデータを追加する場合は、各列の名前が対応するフィールドの名前と正確に一致していることを確認します。列名がテーブル内の対応するフィールドの名前と異なる場合は、インポート操作が失敗します。フィールドの名前を確認するには、Access でテーブルをデザイン ビューで開きます。

  3. ソースのブックが開いている場合は、それを閉じます。ソース ファイルを開いたままにしておくと、インポート操作中にデータ変換エラーが発生する可能性があります。

インポート先のデータベースを準備する

  1. インポートするデータが格納される Access データベースを開きます。データベースが読み取り専用でないことと、ご自身にデータベースの変更権限があることを確認します。

    または

    既存データベースにデータを格納しない場合は、新しい空のデータベースを作成してください。そのためには、次の操作を行います。

    [ファイル] タブをクリックし、[新規]、[空のデータベース] の順にクリックします。Access 2007 を使用している場合は、Microsoft Office ボタンをクリックして、[新規] をクリックします。

  2. インポート操作を開始する前に、データを新規と既存のいずれのテーブルに格納するかを決定します。

    新規テーブルを作成する    データを新規テーブルに格納する場合は、テーブルが作成され、このテーブルにインポートしたデータが追加されます。指定した名前のテーブルが既に存在する場合は、テーブルの内容がインポートしたデータで上書きされます。

    既存のテーブルに追加する    データを既存のテーブルに追加する場合は、Excel ワークシートの行が指定したテーブルに追加されます。

    追加操作中のほとんどの失敗の原因は、ソース データがインポート先のテーブルの構造とフィールド設定に一致しないことです。これを避けるために、インポート先テーブルをデザイン ビューで開いて、次の項目を確認してください。

    • 最初の行    ソースのワークシートや名前付き範囲の最初の行に列見出しが含まれていない場合は、ソース ワークシートの各列の位置とデータ型がテーブル内の対応するフィールドの位置とデータ型に一致していることを確認します。最初の行に列見出しがある場合、列やフィールドの順序は一致する必要はありませんが、各列の名前とデータ型は、対応するフィールドの名前とデータ型と正確に一致する必要があります。

    • 存在しないフィールドや不要なフィールド    インポート先テーブルにソースのワークシート内の 1 つ以上のフィールドが存在しない場合は、インポート操作を開始する前に、それらのフィールドを追加します。ただし、テーブルに、ソースに存在しないフィールドが存在する場合、これらのフィールドで Null 値が許容されるときは、フィールドをテーブルから削除する必要はありません。

      ヒント: フィールドの "値要求" プロパティが "いいえ" に設定され、"入力規則" プロパティが Null 値を許可する設定になっている場合は、Null 値が許容されます。

    • 主キー    テーブルに主キー フィールドがある場合、この主キー フィールドと互換性のある値を持つ列がソースのワークシートや範囲に必要であると共に、インポートされるキー値が一意である必要があります。インポート先テーブルの既存の主キー値と同じ値がインポートされるレコードにあると、インポート操作中にエラー メッセージが表示されます。

    • インデックス フィールド    テーブル内に "インデックス" プロパティが [はい (重複なし)] に設定されているフィールドがある場合、ソースのワークシートや範囲の対応する列は、一意の値を持つ必要があります。

      次の手順に進んでインポート操作を実行します。

インポート操作を開始する

  1. インポート/リンク ウィザードの場所は、Access のバージョンによって若干異なります。Access のバージョンに対応した手順を選択してください。

    • Access の最新の Office 365 サブスクリプション バージョンを使っている場合は、[外部データ] タブの [インポートとリンク] グループで、[新しいデータ ソース]、[ファイルから]、[Excel] の順にクリックします。

    • Access 2016、Access 2013、または Access 2010 を使っている場合は、[外部データ] タブの [インポートとリンク] グループで、[Excel] をクリックします。

    • Access 2007 を使っている場合は、[外部データ] タブの [インポート] グループで、[Excel​​] をクリックします。

    注: データベースが開いていないと、[外部データ] タブは使用できません。

  2. [外部データの取り込み - Excel スプレッドシート] ダイアログ ボックスの [ファイル名] ボックスで、インポートするデータを含む Excel ファイルの名前を指定します。

    または

    [参照] をクリックして [ファイルを開く] ダイアログ ボックスを使い、インポートするファイルを特定します。

  3. インポートするデータをどのようなテーブルに格納するかを指定します。

    データを新規テーブルに格納する場合は、[現在のデータベースの新しいテーブルにソース データをインポートする] を選びます。後で、このテーブルに命名するよう求められます。

    既存のテーブルにデータを追加するには、[レコードのコピーを次のテーブルに追加する] を選んで、ドロップダウン リストからテーブルを選びます。データベースにテーブルがない場合、このオプションは利用できません。

    リンク テーブルを作成してデータ ソースにリンクする手順については、この記事で後述する「Excel データにリンクする」をご覧ください。

  4. [OK] をクリックします。

    スプレッドシート インポート ウィザードが開始され、インポート処理を誘導します。次の手順に進みます。

スプレッドシート インポート ウィザードを使う

  1. ウィザードの最初のページで、インポートするデータを含むワークシートを選び、[次へ] をクリックします。

  2. ウィザードの 2 ページで、[ワークシート] か [名前の付いた範囲] をクリックし、インポートするワークシートか名前付き範囲を選んで [次へ] をクリックします。

  3. ソースのワークシートや範囲の 1 行目にフィールド名が含まれる場合は、[先頭行をフィールド名として使う] を選び、[次へ] をクリックします。

    データを新規テーブルにインポートする場合、Access では、テーブルのフィールドの命名にこの列見出しが使われます。この名前はインポート操作中かそれ以降に変更できます。データを既存のテーブルに追加する場合、ソースのワークシートの列見出しがインポート先のテーブルのフィールド名に正確に一致することを確認します。

    データを既存のテーブルに追加する場合は、ここからスキップして手順 6 に進みます。データを新規テーブルにインポートする場合は、以下の手順を実行します。

  4. フィールド プロパティを確認するよう求められます。ページの下半分の列をクリックし、対応するフィールドのプロパティを表示します。必要に応じて、次のいずれかの操作を行います。

    • インポート先のフィールドの名前とデータ型を確認し、必要に応じて変更します。

      Access は、各列の最初の 8 行を確認し、対応するフィールドのデータ型の候補を示します。ワークシートの列の最初の 8 行にテキスト型と数値型など複数のデータ型が含まれる場合、列のすべての値と互換性のあるデータ型 (通常、テキスト型) の候補が示されます。別のデータ型を選択することもできますが、選んだデータ型と互換性のない値は、インポート操作中に無視されるか誤って変換されることに注意してください。存在しない値や誤った値を修正する方法の詳細については、この記事で後述する「存在しない値や誤った値のトラブルシューティングを行う」のセクションをご覧ください。

    • フィールドにインデックスを作成する場合は、[インデックス] を [はい] に設定します。

    • 特定のソース列を完全にスキップする場合は、[このフィールドをインポートしない] チェック ボックスをオンにします。

      オプションを選んだら、[次へ] をクリックします。

  5. 次の画面で、テーブルの主キーを指定します。[主キーを自動的に設定する] を選ぶと、自動的にオートナンバー型フィールドがインポート先テーブルの最初のフィールドとして追加され、1 から始まる一意の ID 値が入力されます。[次へ] をクリックします。

  6. 最後のウィザード画面で、インポート先テーブルの名前を指定します。[インポート先のテーブル] ボックスに、テーブルの名前を入力します。テーブルが既に存在する場合は、テーブルの既存内容を上書きするかどうかをたずねる確認メッセージが表示されます。続行する場合は [はい]、インポート先テーブルに別の名前を指定する場合は [いいえ] をクリックし、[完了] をクリックしてデータをインポートします。

    Access が一部か全部のデータをインポートできた場合は、インポート操作の状態を示すページが表示されます。また、操作の詳細は、後で使えるよう、定義として保存することもできます。逆に、操作が完全に失敗した場合は、「ファイルをインポートするときにエラーが発生しました」というメッセージが表示されます。

  7. 操作の詳細を後で使えるよう保存する場合は、[はい] をクリックします。詳細を保存しておくと、同じ操作を繰り返す場合に、ウィザードの手順を毎回最初から実行する必要がなくなります。

定義の詳細を保存する方法については、「インポートやエクスポートの操作の詳細を定義として保存する」をご覧ください。

保存済みのインポート定義またはリンク定義を実行する方法については、「保存済みのインポート定義またはエクスポート定義を実行する」をご覧ください。

特定の時間にインポートおよびリンクのタスクをスケジュールする方法については、「インポート定義やエクスポート定義のスケジュールを設定する」をご覧ください。

存在しない値または不適切な値のトラブルシューティング

ファイルをインポートするときにエラーが発生しました」というメッセージが表示された場合、インポート操作は完全に失敗しています。代わりに、操作の詳細を保存するよう求めるダイアログ ボックスが表示された場合は、データの全部か一部が正常にインポートされています。状態メッセージには、インポート操作中に発生したすべてのエラーの説明を含むエラー ログ テーブルの名前も示されます。

重要: 状態メッセージに操作が完全に成功したことが示された場合でも、テーブルを使い始める前にテーブルの内容と構造を表示し、それらが正しいことを確認してください。

  • すべてのデータがテーブルに追加されたかどうかを確認する場合は、データシート ビューでインポート先のテーブルを開きます。

  • データ型などのフィールド プロパティ設定を確認する場合は、デザイン ビューでテーブルを開きます。

次の表に、不足している値や誤った値を修正するための手順を示します。

ヒント: 結果のトラブルシューティングを行うときに、いくつかの値が不足していることが判明した場合は、テーブルに手動で値を追加できます。これに対して、列全体や大量の値が不足しているか正しくインポートされていないことが判明した場合は、ソース ファイルで問題を修正してください。判明した問題をすべて修正したら、インポート操作を再実行してください。

問題

解決策

グラフィック要素

ロゴ、グラフ、図などのグラフィック要素はインポートできません。これらは、インポート操作の完了後に手動でデータベースに追加してください。

集計値

集計列や集計セルの計算結果はインポートされますが、計算式はインポートされません。インポート操作時には、数値など、計算式の計算結果と互換性のあるデータ型を指定できます。

TRUE や FALSE の値と -1 や 0 の値が混在する

ソースのワークシートや範囲に TRUE か FALSE の値のみを含む列がある場合は、列に [はい/いいえ] フィールドが作成され、フィールドに -1 や 0 の値が挿入されます。ソースのワークシートや範囲に -1 か 0 の値のみを含む列がある場合は、既定で列に数値型のフィールドが作成されます。左記の問題を回避するには、インポート操作時にフィールドのデータ型を [はい/いいえ] に変更します。

複数値を持つフィールド

データを新規テーブルにインポートするか、既存のテーブルに追加する場合、ソース列にセミコロン (;) 区切りの値のリストが含まれていても、フィールドでの複数値のサポートは有効化されません。値のリストは、1 つの値として扱われ、テキスト フィールドに取り込まれます。

データが切り捨てられる

Access テーブルの列内でデータが切り捨てられて表示される場合は、データシート ビューで列幅を広げてみます。それでも問題が解決しない場合は、Excel の数値列データが Access のインポート先フィールドのフィールド サイズに格納するには大きすぎるということです。たとえば、インポート先の Access データベース フィールドの "フィールドサイズ" プロパティが "バイト型" に設定されているのに、ソース データに 255 より大きい値が含まれています。ソース ファイルの値を修正して、インポートをやり直します。

表示形式

データシート ビューで値が正しく表示されるよう、デザイン ビューで特定のフィールドの "表示形式" プロパティを必要に応じて設定します。次に例を示します。

  • インポート操作の完了後、データシート ビューの [はい/いいえ] フィールドに -1 や 0 が表示される。これを解決するには、インポート操作の完了後、フィールドの "表示形式" プロパティを "はい/いいえ" に設定して、代わりにチェック ボックスを表示します。

  • "日付 (L)"/"日付 (M)" 形式の日付が、Access では "日付 (S)(S)" 形式の日付として表示される場合があります。これを解決するには、Access のデザイン ビューでインポート先テーブルを開き、日付型フィールドの "表示形式" プロパティを "日付 (L)(G)" か "日付 (M)(A)" に設定します。

注: ソースのワークシートに太字、下線、斜体などのリッチ テキスト形式が含まれる場合、テキストはインポートされますが、書式設定は失われます。

重複値 (キー違反エラー)

インポートするレコードに、インポート先テーブルの主キー フィールドや、"インデックス" プロパティが [はい (重複なし)] に設定されているフィールドには格納されない重複値が含まれている可能性があります。ソース ファイルで重複値を排除して、インポートをやり直します。

日付型の値の 4 年のずれ

Excel ワークシートからインポートされた日付型フィールドが、4 年ずれている場合があります。Windows 版 Excel が使っている 1900 年から計算する日付システムでは、シリアル番号の範囲は 1 から 65,380 で、これは 1900 年 1 月 1 日から 2078 年 12 月 31 日に対応します。これに対して、Macintosh 版 Excel が使っている 1904 年から計算する日付システムでは、シリアル番号の範囲は 0 から 63,918 で、これは 1904 年 1 月 1 日から 2078 年 12 月 31 日に対応します。

データをインポートする前に Excel ックの日付システムを変更するか、データを追加した後で [日付型フィールド名] + 1462 の式を使う更新クエリを実行して日付を修正します。

Null 値

インポート操作の終了時に、操作中に削除されたか失われたデータについてのエラー メッセージが表示される場合があります。または、データシート ビューでテーブルを開いたときに、一部のフィールド値が空白になっている場合があります。Excel のソース列が書式設定されていないか、ソースの最初の 8 行に複数のデータ型の値が含まれている場合は、ソースのワークシートを開いて次の手順を実行します。

  • ソース列を書式設定します。

  • 各列の最初の 8 行に複数のデータ型が含まれないよう、行を移動します。

  • インポート操作を行うとき、フィールドごとに適切なデータ型を選びます。データ型が正しくないと、インポート操作を完了しても、列全体に Null 値や誤った値が格納される場合があります。

上記の手順によって、できるだけ少ない Null 値が生成されるようになります。それでも Null 値が表示されるケースを次の表に示します。

不足する値のデータ型

インポート先のテーブル

インポート先のデータ型

解決方法

テキスト

新規テーブル

日付

すべてのテキスト型の値を日付型の値に置き換え、インポートをやり直します。

テキスト

既存のテーブル

数値型か日付型

すべてのテキスト型の値をインポート先フィールドのデータ型に一致する値に置き換え、インポートをやり直します。

日付型の値が数値型の値に置き換わる

次の場合、完全な日付型の値でなく、一見ランダムな 5 桁の数値が表示されます。

  • ワークシートで、ソース列の最初の 8 行には数値型の値のみが含まれるが、後続の行に日付型の値がいくつか含まれる。これらの日付型の値は誤った方法で変換される。

  • ソース列の最初の 8 行の一部に日付型の値が含まれる場合に、その値を数値型のフィールドにインポートしようとした。これらの日付型の値は誤った方法で変換される。

    これを回避するには、ソース列で日付型の値を数値型の値に置き換え、インポートをやり直します。

    大部分が日付型の値から成る列にテキスト型の値もいくつか含まれる場合、日付型の値がすべて一見ランダムな 5 桁の数値として表示されることがあります。これを回避するには、すべてのテキスト型の値を日付型の値に置き換え、インポートをやり直します。

数値型の値が日付型の値に置き換わる

次の場合、完全な数値型の値でなく、一見ランダムな日付型の値が表示されます。

  • ソース列の最初の 8 行には日付型の値のみが含まれるが、後続の行に数値型の値がいくつか含まれる。これらの数値型の値は誤った方法で変換される。

  • ソース列の最初の 8 行の一部に数値型の値が含まれる場合に、その値を日付型のフィールドにインポートしようとした。これらの数値型の値は誤った方法で変換される。

これを回避するには、ソース列で数値型の値を日付型の値に置き換え、インポートをやり直します。

また、データシート ビューで、(ウィザードの最終ページに表示される) エラー ログ テーブルを確認してください。このテーブルには、[エラー]、[フィールド]、[行] の 3 つのフィールドがあります。各行には特定のエラーについての情報が表示され、[エラー] フィールドの内容は問題のトラブルシューティングに役立ちます。

エラー文字列とトラブルシューティングのヒント

エラー

説明

「フィールドの切り捨て」

ファイルの値が、このフィールドの "フィールドサイズ" プロパティ設定には大きすぎます。

「データ型の変換エラー」

このフィールドのデータ型に対し、ワークシートの値が誤っています。値が存在しないかインポート先フィールドでは誤っている可能性があります。この問題のトラブルシューティングを行う方法の詳細については、前の表をご覧ください。

「キー違反」

このレコードの主キー値は重複していて、既にテーブルに存在しています。 

「入力規則エラー」

値が、このフィールドかテーブルの "ValidationRule/入力規則" プロパティを使って設定された規則に違反しています。

「必須フィールドに Null 値をインポートしようとしました」

このフィールドの "必須" プロパティが "はい" に設定されているため、このフィールドでは Null 値は許可されません。

「オートナンバー型フィールドに Null 値を追加しようとしました」

[オートナンバー型] フィールドに追加しようとしたインポート元データに、"Null" 値が含まれています。

「解析不能なレコード」

テキスト型の値がテキストの区切り記号 (通常、引用符 (")) で囲まれています。値を区切り記号で囲む場合は、次の例のようにテキスト ファイル内で区切り記号を 2 回繰り返してください。

直径 4 1/2""

ページの先頭へ

Excel データにリンクする

Access データベースを別のプログラムのデータにリンクすることで、データベースに Excel データのコピーが格納されていなくても Access のクエリ/レポート ツールを使用することができます。

Excel のワークシートや名前付き範囲にリンクすると、リンク元セルにリンクされる新規テーブルが作成されます。Excel のリンク元セルに加えた変更はすべてリンク テーブルに表示されます。ただし、Access 内の対応するテーブルの内容は編集できません。データを追加、編集、削除したい場合は、リンク元ファイルでその変更を行ってください。

Access から Excel ワークシートにリンクする一般的なシナリオ

通常、Excel ワークシートをインポートする代わりにリンクするのは、以下のような場合です。

  • データは Excel ワークシートで引き続き維持しながら、Access の強力なクエリ/レポート機能を使えるようにしたい。

  • 部門やワークグループは Access を使っているが、外部ソースから受け取って操作するデータは Excel ワークシート形式である。外部データのコピーは保持せずに、Access でそのデータを操作できるようにしたい。

初めて Excel ワークシートにリンクする場合

  • Excel 内から Access データベースへのリンクを作成することはできません。

  • Excel ファイルにリンクすると、新しいテーブル (通称: リンク テーブル) が作成されます。テーブルにはリンク元のワークシートや名前付き範囲のデータが表示されますが、データベースのデータが実際に保存されているわけではありません。

  • Excel データをデータベースの既存テーブルにリンクすることはできません。つまり、リンク操作を実行することでデータを既存テーブルに追加することはできないということです。

  • データベースには、複数のリンク テーブルを格納できます。

  • Excel データを変更した場合、変更内容がリンク テーブルにも自動的に反映されます。ただし、Access 内のリンク テーブルの内容と構造は読み取り専用です。

  • Access で Excel ブックを開く ([ファイルを開く] ダイアログ ボックスの [ファイルの種類] リスト ボックスで "Microsoft Excel" に変更し、目的のファイルを選ぶ) と、空のデータベースが作成され、自動的にスプレッドシート リンク ウィザードが開始されます。

Excel データを準備する

  1. Excel ファイルと、リンクするデータが含まれるワークシートまたは範囲を設定します。ワークシート全体にリンクしたくない場合は、リンクするセルのみが含まれる名前付き範囲を定義することを検討してください。

    Excel で名前付き範囲を作成する (省略可能 – ワークシート データの一部のみにリンクしたい場合に便利です)   

    1. Excel に切り替え、名前付き範囲を定義するワークシートを表示します。

    2. リンク元のデータが含まれているセルの範囲を選びます。

    3. 選んだ範囲内で右クリックし、[範囲に名前を付ける] か [名前の定義] をクリックします。

    4. [新しい名前] ダイアログ ボックスの [名前] ボックスで範囲の名前を指定し、[OK] をクリックします。

      リンク操作を行う際は、一度に 1 つのワークシートや範囲にしかリンクできないことに注意してください。ブック内の複数の場所のデータにリンクするには、ワークシートや範囲ごとにリンク操作を繰り返します。

  2. リンク元データを確認し、次の表に示されたアクションを実行します。

    要素

    説明

    表形式

    セルを表形式になるよう指定します。範囲に結合されたセルが含まれる場合、セル内容は左端の列に対応するフィールドに配置され、その他のフィールドは空白になります。

    列と行をスキップする

    リンク操作中にリンク元の列や行をスキップすることはできません。ただし、フィールドを表示しないようしたり、レコードをフィルターしたりすることはできます。それには、リンク テーブルを Access にインポートした後でデータシート ビューで開きます。

    列数

    Access のテーブルでは 255 個を超えるフィールドはサポートされないため、リンク元の列の数は 255 を超えることはできません。

    空白の列、行、セル

    Excel のワークシートや範囲から、空白の不要な列と行をすべて削除します。空白のセルがある場合は、不足しているデータを追加するようにしてください。

    エラー値

    ワークシートや範囲の 1 つ以上のセルにエラー値が含まれる場合は、インポート操作を開始する前に修正します。ソースのワークシートや範囲にエラー値が含まれる場合、テーブル内の対応するフィールドに Null 値が挿入されることに注意してください。

    データ型

    リンク テーブルのフィールドのデータ型やサイズは変更できません。リンク操作を開始する前に、各列に特定の型のデータが含まれていることを確認してください。

    列に複数のデータ型の値が含まれる場合は、列を書式設定することをお勧めします。たとえば、ワークシートの FlightNo 列に 871、AA90、171 など数値と文字列値が混在しているとします。存在しない値や誤った値が発生しないようにするには、次の手順を実行します。

    1. 列を右クリックし、[セルの書式設定] をクリックします。

    2. [表示形式] タブの [分類] で、書式を選びます。

    3. [OK] をクリックします。

    最初の行

    ワークシートや名前付き範囲の最初の行に列名が含まれる場合、最初の行のデータを Access がリンク操作中にフィールド名として扱うよう指定できます。ワークシートに列名がない場合や、特定の列名が Access のフィールドの名前付け規則に違反している場合、対応する各フィールドに有効な名前が割り当てられます。

  3. リンク元のファイルが開いている場合は、それを閉じます。

インポート先のデータベースを準備する

  1. リンクを作成するデータベースを開きます。データベースが読み取り専用でないことと、データベースを変更するために必要とされる権限があることを確認します。

  2. 既存データベースにリンクを格納しない場合は、新しい空のデータベースを作成してください。[ファイル] タブをクリックし、[新規]、[空のデータベース] の順にクリックします。Access 2007 を使用している場合は、Microsoft Office ボタンをクリックして、[新規] をクリックします。

これで、リンク操作を開始できます。

リンクを作成する

  1. インポート/リンク ウィザードの場所は、Access のバージョンによって若干異なります。Access のバージョンに対応した手順を選択してください。

    • Access の最新の Office 365 サブスクリプション バージョンを使っている場合は、[外部データ] タブの [インポートとリンク] グループで、[新しいデータ ソース]、[ファイルから]、[Excel] の順にクリックします。

    • Access 2016、Access 2013、または Access 2010 を使っている場合は、[外部データ] タブの [インポートとリンク] グループで、[Excel] をクリックします。

    • Access 2007 を使っている場合は、[外部データ] タブの [インポート] グループで、[Excel​​] をクリックします。

    注: データベースが開いていないと、[外部データ] タブは使用できません。

  2. [外部データの取り込み - Excel スプレッドシート] ダイアログ ボックスの [ファイル名] ボックスで、リンク元の Excel ファイルの名前を指定します。

  3. [リンク テーブルを作成してソース データにリンクする] を選び、[OK] をクリックします。

    スプレッドシート リンク ウィザードが開始され、リンク手順に従って進みます。

  4. ウィザードの最初のページで、ワークシートか名前付き範囲を選び、[次へ] をクリックします。

  5. リンク元のワークシートや範囲の 1 行目にフィールド名が含まれる場合は、[先頭行をフィールド名として使う] を選択します。Access では、テーブルのフィールドの命名にこの列見出しが使われます。列名に一部の特殊文字が含まれている場合、その列名は Access 内でフィールド名として使用することはできません。この場合、そのフィールドに Access によって有効な名前が割り当てられるという内容のエラー メッセージが表示されます。[OK] をクリックして操作を続けます。

  6. ウィザードの最後のページで、リンク テーブルの名前を指定し、[完了] をクリックします。指定した名前のテーブルが既に存在する場合は、その既存のテーブルかクエリを上書きするかどうかをたずねられます。テーブルかクエリを上書きする場合は [はい]、別の名前を指定する場合は [いいえ] をクリックします。

    Access はリンク テーブルを作成しようとします。操作が成功すると、「テーブルをリンクしました」というメッセージが表示されます。リンク テーブルを開き、フィールドとデータを表示して、すべてのフィールドのデータが正しいことを確認します。

    エラー値や誤ったデータがある場合は、リンク元データのトラブルシューティングを行う必要があります。エラー値のトラブルシューティングを行う方法の詳細については、次のセクションをご覧ください。

ページの先頭へ

#Num! などリンク テーブルの誤った値のトラブルシューティングを行う

テーブルをリンクしました」というメッセージが表示された場合でも、データシート ビューでテーブルを開いて、行と列に正しいデータが表示されていることを確認してください。

テーブルにエラーや誤ったデータが表示されている場合は、次の表に示された修正アクションを実行し、リンクをやり直します。リンク テーブルは読み取り専用のため、テーブルに値を直接追加することはできませんので、注意してください。

問題

解決策

グラフィック要素

ロゴ、グラフ、図などの Excel のグラフィック要素は Access にリンクできません。

表示形式

データシート ビューで値が正しく表示されるよう、デザイン ビューで特定のフィールドの "表示形式" プロパティを必要に応じて設定します。

集計値

集計列の計算結果は対応するフィールドに表示されますが、Access ではその計算式 (式) を表示することはできません。

テキスト型の値が切り捨てられる

データシート ビューで列幅を広げます。それでも値全体が表示されない場合は、値が 255 文字を超えていることが原因である可能性があります。Access では最初の 255 文字にしかリンクできないため、データにリンクするのでなく、データをインポートしてください。

数値型の値のオーバーフローのエラー メッセージ

リンク テーブルが一見正しいのに、後でテーブルに対して問い合わせを実行すると、「数値型フィールドのオーバーフロー」エラー メッセージが表示される場合があります。この問題が起こる原因は、リンク テーブルのフィールドのデータ型とそのフィールドに格納されるデータの型が競合するためです。

TRUE や FALSE の値と -1 や 0 の値が混在する

リンク元のワークシートや範囲に TRUE か FALSE の値のみを含む列がある場合は、リンク テーブルの列に [はい/いいえ] フィールドが作成されます。リンク元のワークシートや範囲に -1 か 0 の値のみを含む列がある場合は、既定でテーブルの列に数値型のフィールドが作成されます。そのフィールドのデータ型は変更できません。リンク テーブルに [はい/いいえ] フィールドが必要な場合は、リンク元の列に TRUE や FALSE の値が含まれていることを確認します。

複数値を持つフィールド

リンク元の列にセミコロン (;) 区切りの値のリストが含まれていても、フィールドでの複数値のサポートは有効化されません。値のリストは、1 つの値として扱われ、テキスト フィールドに取り込まれます。

Num!

次の場合、フィールドにデータ自体でなく #Num! エラー値が表示されます。

  • 大部分がテキスト型の値から成るリンク元の列に数値型や日付型の値もいくつか含まれる場合、それら数値型や日付型の値はインポートされません。

  • 大部分が数値型の値から成るリンク元の列にテキスト型の値もいくつか含まれる場合、それらテキスト型の値はインポートされません。

  • 大部分が日付型の値から成るリンク元の列にテキスト型の値もいくつか含まれる場合、それらテキスト型の値はインポートされません。

この場合、次の操作を行って、テーブル内の Null 値の数を最小化します。

  1. リンク元の列に複数のデータ型が含まれないようにします。

  2. Excel ワークシートの列を書式設定します。

  3. リンク操作を行うとき、フィールドごとに適切なデータ型を選びます。データ型が正しくないと、作成される列の全行のデータに #Num! の値のみが格納される可能性があります。

日付型の値が数値型の値に置き換わる

フィールドに一見ランダムな 5 桁の数値が表示された場合は、リンク元の列に多数の数値型の値のほかに少数の日付型の値も含まれていないかチェックします。日付型の値は、数値型の列に表示しようとすると、不適切な数値に変換されます。日付型の値を数値型の値に置き換え、リンクをやり直します。

数値型の値が日付型の値に置き換わる

フィールドに一見ランダムな日付型の値が表示された場合は、リンク元の列に多数の数値型の値のほかに少数の数値型の値も含まれていないかチェックします。数値型の値は、日付型の列に表示しようとすると、不適切な日付に変換されます。数値型の値を日付型の値に置き換え、リンクをやり直します。


ページの先頭へ

スキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×