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

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

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

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


Excel データのインポートについて理解する

1 つまたは複数の Excel ワークシートから、その一部またはすべてのデータを Access に格納するには、ワークシートの内容を Access の新規または既存のデータベースにインポートする必要があります。データをインポートすると、新規または既存のテーブルに対象データのコピーが作成されます。元の Excel ファイルにはその影響は一切及びません。

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

  • 長期間、Excel でデータを管理してきましたが、今後のことを考え、Access でデータを管理することに決めました。新規の Access データベースを 1 つまたは複数作成し、そこに Excel ワークシートのデータを格納したいとします。
  • 所属部署では Access を使用していますが、Excel 形式のデータを受け取ることもあります。その場合、Excel 形式のデータを Access データベースに結合しなければなりません。このような Excel ワークシートを、簡単に Access データベースにインポートできるようにしたいとします。
  • チーム メンバーから Excel ブック形式のウィークリー レポートを受け取り、それを Access で管理しています。これに関して、インポート処理を合理化し、毎週決まった時刻にデータが Access データベースにインポートされるようにしたいとします。

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

  • Excel ブックを Access データベースとして保存することはできません。Excel データから Access データベースを作成することもできません。
  • Excel ブックを Access で開くと ([ファイルを開く] ダイアログ ボックスの [ファイルの種類] ボックスで [Microsoft Excel (*.xls)] をクリックし、目的のファイルを選択)、データはインポートされず、ブックへのリンクが作成されます。ブックへのリンクを作成することと、ワークシートをデータベースにインポートすることは根本的に異なります。リンクの詳細については、後半の「Excel データにリンクする」を参照してください。

ページの先頭へ ページの先頭へ

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

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

ワークシートの準備を整える

  1. インポート元ファイルを探し、Access に格納するデータのあるワークシートを選択します。ワークシートの一部分のみをインポートするには、インポート対象のセルのみを名前付き範囲として定義できます。

表示Excel で名前付き範囲を定義する方法

  1. Excel に切り替え、インポートするワークシートを開きます。
  2. インポート対象のデータが含まれるセル範囲を選択します。
  3. 選択したセル範囲の内部を右クリックし、[範囲に名前を付ける] をクリックします。
  4. [新しい名前] ダイアログ ボックスの [名前] ボックスに範囲の名前を指定し、[OK] をクリックします。

1 回の操作でインポートできるワークシートは 1 つだけです。複数のワークシートのデータをインポートするには、ワークシートの数だけインポート操作を繰り返す必要があります。

  1. インポート元データを調べ、以下の表の説明に従って必要な処理を行います。
要素 説明
列数 インポート元の列数は 255 を超えることはできません。Access では 1 つのテーブルのフィールド数が最大 255 に限られています。
列と行の除外

インポート元のワークシートまたは名前付き範囲には、インポートする行と列だけを含めるようにしてください。

    インポートする際に、特定の行をフィルタで除外することはできません。

    既存テーブルにデータをインポートする際に、特定の列を非表示にして除外することはできません。

結合されたセル セルが表形式になっていることを確認する必要があります。ワークシートまたは名前付き範囲に結合されたセルが含まれる場合、そのセルのデータは左端の列に対応するフィールドに格納され、それ以外のフィールドは空白になります。
空白の列、行、セル ワークシートまたは範囲には不要な空白の列や行がないようにしてください。ワークシートまたはセル範囲に空白のセルがある場合は、入力漏れのデータを入力してください。空白のセルを残したまま既存のテーブルにレコードを追加する場合は、テーブル内の対応するフィールドが Null 値 (欠損値または不明値) を許容する設定になっていることを確認してください。フィールドはその "Required/値要求" プロパティが "いいえ" に設定され、"ValidationRule/入力規則" プロパティが Null 値を許可する設定になっていれば、Null 値を許容します。
エラー値 ワークシートまたは範囲の中に、#NUM や #DIV などのエラー値が含まれているセルが 1 つでもある場合は、インポート操作を開始する前にそれらの値を修正する必要があります。インポート元のワークシートまたは範囲にエラー値が含まれていると、テーブル内の対応するフィールドには Null 値が格納されます。これらのエラーを修正する方法の詳細については、この後の「存在しない値または不適切な値のトラブルシューティング」を参照してください。
データ型

インポート中にエラーが発生しないよう、インポート元の各列の中のすべての行に同じ型のデータが格納されていることを確認します。Access では、インポート元の最初の 8 行を調べてテーブル内のフィールドのデータ型を推定します。すべての列について、最初の 8 行には異なるデータ型を混在させないことを強くお勧めします。

さらに、インポート操作を開始する前に、インポート元のすべての列について、書式設定を行うことをお勧めします。特に、1 つの列の中に複数のデータ型が混在している場合は書式設定を強くお勧めします。たとえば、ワークシートの FlightNo 列には、871、AA90、171 などの数値とテキスト値が入力されている可能性があります。これらの値が Null 値または不適切な値となることがないようにするため、次の操作を行ってください。

  1. 列見出しを右クリックして [セルの書式設定] をクリックします。
  2. [表示形式] タブの [分類] で、書式を選択します。FlightNo 列であれば、[文字列] を選択するとよいでしょう。
  3. [OK] をクリックします。

インポート元の列が書式設定されていても、9 行目以降に異なるデータ型が混在している場合、それらの値はスキップされるか、不適切に変換される可能性があります。トラブルシューティング情報については「インポートしたテーブルに含まれる存在しない値や不適切な値に関するトラブルシューティング」のセクションを参照してください。

最初の行

ワークシートまたは名前付き範囲の最初の行に列名が格納されている場合は、インポート時に最初の行のデータがフィールド名として処理されるよう Access で指定できます。逆に、列名が格納されていない場合は、インポート操作を開始する前に列名を追加することをお勧めします。

 メモ   既存テーブルにデータを追加する場合は、各列の名前が対応するフィールド名と完全に一致していることを確認してください。列名とテーブルのフィールド名に相違があると、インポートは失敗します。Access でフィールド名を確認するには、テーブルをデザイン ビューで開きます。

  1. インポート元のブックが開いている場合は閉じます。インポート元ファイルが開いたままだと、インポート中にデータ変換エラーが発生する可能性があります。

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

  1. インポート先の Access データベースを開きます。このデータベースが読み取り専用でないこと、および、自分に書き込み権限があることを確認します。

または

既存データベースにデータを格納したくない場合は、空のデータベースを作成してください。これを行うには、次の手順に従います。

ボタン イメージ (Microsoft Office ボタン) をクリックし、[新規作成] をクリックします。

  1. インポート操作を開始する前に、まず、データを新規テーブルと既存テーブルのどちらに追加するかを選択します。

新規テーブルに格納する    新規テーブルへの格納を選択した場合は、Access によりテーブルが作成され、そこへインポート データが追加されます。なお、指定した名前が既存テーブルと重複していると、既存テーブルがインポート データで上書きされるので注意が必要です。

既存テーブルに追加する    既存テーブルへの追加を選択した場合は、Excel ファイルの行が指定テーブルに追加されます。

既存テーブルへの追加が失敗する原因は、ほとんどの場合、インポート元データとインポート先テーブルの構造やフィールド設定が一致していないことにあります。これを避けるため、インポート先テーブルをデザイン ビューで開き、以下の項目を確認してください。

  • 最初の行     インポート元のワークシートまたは名前付き範囲に列見出しが含まれていない場合、インポート元のワークシートの各列の位置とデータ型が、テーブル内の対応するフィールドと一致している必要があります。最初の行に列見出しが含まれている場合は、列とフィールドの位置は一致していなくてもかまいませんが、列の名前とデータ型は対応するフィールドと完全に一致している必要があります。
  • 存在しないフィールドまたは不要なフィールド     インポート元ワークシート内のフィールドがインポート先テーブルに存在しない場合、インポート操作を開始する前に追加する必要があります。一方、インポート元にはないフィールドがテーブルにある場合、それらのフィールドが Null 値を許容する設定になっていれば、あえて削除する必要はありません。

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

  • 主キー    テーブルに主キー フィールドがある場合、そのフィールドに対応する列がインポート元のワークシートまたは範囲にも必要です。そして、その列内の値はそれぞれが一意でなければなりません。インポート元レコードに含まれている主キー値と同じ値が、インポート先テーブルにも存在する場合、インポート中にエラー メッセージが表示されます。
  • インデックスが設定されたフィールド    テーブルのフィールドの "Indexed/インデックス" プロパティが "Yes (No Duplicates)/はい (重複なし)" に設定されている場合、インポート元 (ワークシートまたは範囲) の対応する列には一意の値が格納されている必要があります。

インポート操作を実行するには、次の手順に進んでください。

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

  1. [外部データ] タブの [インポート] で [Excel] をクリックします。ボタン イメージ

 メモ   [外部データ] タブは、データベースが開いていない場合は表示されません。

  1. [外部データの取り込み - Excel ワークシート] ダイアログ ボックスの [ファイル名] ボックスに、インポート対象データが格納されている Excel ファイルの名前を指定します。

または

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

  1. インポートしたデータの格納方法を指定します。

新規テーブルにデータを格納するには、[カレント データベースの新しいテーブルにソース データをインポートする] を選択します。このテーブルの名前は後で指定します。

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

 メモ   リンク テーブルを作成してデータ ソースにリンクする方法については、後半の「Excel データにリンクする」を参照してください。

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

ワークシート インポート ウィザードが起動して、インポート操作を実行できます。以下の手順に進んでください。

ワークシート インポート ウィザードを使用する

  1. ウィザードの最初のページで、インポートするデータが格納されているワークシートを選択し、[次へ] をクリックします。
  2. ウィザードの 2 番目のページで、[ワークシート] または [名前の付いた範囲] をクリックし、インポートするワークシートまたは名前付き範囲を選択して [次へ] をクリックします。
  3. インポート元のワークシートまたは範囲の最初の行にフィールド名が格納されている場合は、[先頭行をフィールド名として使う] チェック ボックスをオンにして、[次へ] をクリックします。

データを新規テーブルにインポートする場合は、列見出しがテーブルのフィールド名となります。これらの名前は、インポート時またはインポート後に変更することができます。既存テーブルにデータを追加する場合は、インポート元のワークシート内の列見出しが、インポート先テーブル内のフィールド名と完全に一致していることを確認してください。

データを既存テーブルに追加する場合は、手順 6. に直接進みます。新規テーブルに追加する場合は、次の手順に進みます。

  1. ウィザードの指示に従って、フィールドのプロパティを確認します。列をページの下半分の部分でクリックして、対応するフィールドのプロパティを表示します。必要であれば、次のいずれかの操作を行います。
    • プロパティを確認し、必要であれば、インポート先フィールドの名前とデータ型を修正します。

Access では、各列の最初の 8 行が調べられ、対応するフィールドのデータ型が推定されます。ワークシートの列の最初の 8 行に異なる型の値 (テキストと数値など) が混在している場合は、その列のすべての値に適合するデータ型 (通常はテキスト) が推定されます。別のデータ型に変更することもできますが、そのデータ型に適合しない値を選択すると、インポート処理中に無視されるか不適切な値に変換されるので注意が必要です。存在しない値または不適切な値を修正する方法の詳細については、この後の「存在しない値または不適切な値のトラブルシューティング」を参照してください。

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

オプションの選択が完了したら、[次へ] をクリックします。

  1. 次の画面で、テーブルの主キーを指定します。[主キーを自動的に設定する] を選択すると、インポート先テーブルの最初のフィールドとしてオートナンバー フィールドが追加され、一意の ID 値 (1 から開始) が自動的に生成されて格納されます。[次へ] をクリックします。
  2. 最後のウィザード画面で、インポート先テーブルの名前を指定します。[インポート先のテーブル] ボックスで、テーブルの名前を入力します。既存テーブルと重複する名前を入力した場合は、テーブルの既存の内容を上書きするかどうかの確認を求められます。データをインポートするには、[はい] をクリックしてそのまま続行するか、[いいえ] をクリックしてインポート先テーブルに別の名前を指定してから、[完了] をクリックします。

データが一部でもインポートされた場合は、ウィザードにインポート状況が表示されます。また、インポートの設定を次回以降にも使用できるよう、インポート定義として保存することもできます。逆に、インポートが完全に失敗した場合は、"ファイルをインポートするときにエラーが発生しました" という内容のエラー メッセージが表示されます。

  1. 操作の詳細を保存するには [はい] をクリックします。設定を保存しておくと、同じインポート操作を繰り返す場合に、最初からウィザードの手順を追わなくても済みます。

インポート設定を定義として保存する

  1. [名前を付けて保存] ボックスにインポート定義の名前を入力します。[説明] ボックスには定義の説明を任意で入力します。
  2. 毎週、毎月のように定期的に操作を実行する必要がある場合は、[Outlook 仕事の作成] チェック ボックスをオンにします。これにより、Microsoft Office Outlook 2007 の仕事が作成され、後日、そのインポート定義を実行できるようになります。
  3. [インポートの保存] をクリックします。

Outlook が自動的に起動します。

 メモ   Outlook がインストールされていない場合は、エラー メッセージが表示されます。Outlook の設定に不備がある場合は、Outlook スタートアップ ウィザードが起動します。このウィザードの指示に従って Outlook を設定してください。

  1. Outlook が起動したら、[期限] や [アラーム] などの設定を確認し、必要に応じて修正します。

その仕事を定期的に実行するには、[定期的なアイテム] をクリックします。次の図は、典型的な設定のタスク スケジューラを示します。

Outlook のタスク スケジューラ

Outlook 仕事をスケジュール設定する方法については、「インポート操作やエクスポート操作のスケジュールを設定する」を参照してください。

  1. [保存して閉じる] をクリックします。

保存した仕事を実行する

  1. Outlook のナビゲーション ウィンドウの [仕事] をクリックして、実行する仕事をダブルクリックします。
  2. [仕事] タブの [Microsoft Office Access] で、ボタン イメージ (インポートの実行) をクリックします。
  3. インポート先テーブルをデータシート ビューで開き、そのデータをインポート元ワークシートと比較して、データに問題がないかを確認します。

データが不足していたり、不適切なデータがある場合は、次のセクションのトラブルシューティング情報を参照してください。

ページの先頭へ ページの先頭へ

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

"ファイルをインポートするときにエラーが発生しました" という内容のメッセージが表示された場合は、インポートが完全に失敗しています。逆に、インポート操作の詳細を保存するように要求するダイアログ ボックスが表示された場合は、データの全部または一部のインポートに成功しています。ステータス メッセージには、インポート中に発生したエラーに関する情報が記録されているエラー ログ テーブルの名前も示されます。

ステータス メッセージに処理が正常に終了したことが示された場合でも、テーブルの内容と構造を調べ、異常がないことを確認したうえで、そのテーブルの運用を開始することをお勧めします。

インポート先のテーブルをデータシート ビューで開き、すべてのデータがテーブルに追加されていることを確認します。次に、テーブルをデザイン ビューで開き、フィールドのデータ型やその他のプロパティを確認します。

存在しない値または不適切な値が見つかった場合は、以下の表に示す手順に従って修正してください。

 ヒント   トラブルシューティング中、存在しない値がいくつか見つかった場合は、テーブルに直接追加できます。一方、列全体または大量の値が存在しないこと、または適切にインポートされていないことがわかった場合は、インポート元のファイルで問題を解決する必要があります。確認したすべての問題を修正し終わったら、インポート操作をやり直します。

問題点 解決法
グラフィカル要素 グラフィカル要素 (ロゴ、グラフ、図など) はインポートできません。インポートが完了した後で、手作業でデータベースに追加する必要があります。
計算値 列またはセルの計算結果はインポートされても、計算式はインポートされません。インポート時には、計算式の結果に適合するデータ型 (数値など) を指定できます。
True/False または -1/0 インポート元のワークシートまたは範囲内に True/False 値しか格納されていない列がある場合、その列に対応する Yes/No フィールドが作成され、その中に -1/0 値が挿入されます。一方、インポート元のワークシートまたは範囲内に、-1/0 しか格納されていない列がある場合、既定では、その列に対応する数値フィールドが作成されます。この問題を回避するには、インポート時にフィールドのデータ型を Yes/No に変更することをお勧めします。
複数の値 インポート元の列にセミコロン (;) で区切られた複数の値が格納されている場合、データを新規テーブルにインポートまたは既存テーブルに追加しても、1 つのフィールドに複数の値が取り込まれることはありません。値のリストは 1 つの値として扱われ、テキスト フィールドに取り込まれます。
切り捨てられるデータ Access テーブルの列に切り捨てられて表示されるデータがある場合は、データシート ビューでその列の幅を広げます。それでも問題が解決しない場合は、Excel の数値列のデータが大きすぎて Access のフィールドに収まりきらないことが考えられます。たとえば、Access データベースのインポート先フィールドの "FieldSize/フィールドサイズ" プロパティが "Byte/バイト型" に設定されているのに、インポート元データに 255 より大きな値が含まれている可能性があります。インポート元ファイルでその値を修正してから、インポート操作をやり直してください。
表示形式

デザイン ビューでフィールドの "Format/書式" プロパティを設定しないと、値がデータシート ビューで正しく表示されないことがあります。たとえば、

  • インポート終了後、データシート ビューで、ある Yes/No フィールドに -1/0 値が表示されることがあります。これを解決するには、インポート後にそのフィールドの "Format/書式" プロパティを "Yes/No" に設定して、代わりにチェック ボックスが表示されるようにします。
  • Access では、長い日付形式 Long Date と Medium Date が Short Date として表示されることがあります。これを解決するには、インポート先テーブルをデザイン ビューで開き、問題のフィールドの "Format/書式" プロパティを "Long Date/日付 (L)" または "Medium Date/日付 (M)" に設定します。

 メモ   インポート元ワークシートで、太字、下線付き、斜体などの書式が設定されている場合は、テキストのみがインポートされ、書式は失われます。

重複値 (キー違反エラー) インポート元レコードに重複している値がある場合、それらの値は、インポート先テーブルの主キー フィールドや、"Indexed/インデックス" プロパティが "Yes (No Duplicates)/はい (重複なし)" に設定されているフィールドには格納されません。インポート元ファイルで重複を解決してから、インポート操作をやり直してください。
4 年分ずれた日付値

Excel ワークシートからインポートした日付フィールドでは、値が 4 年分ずれることがあります。Windows 版の Excel では、1900 Date System (シリアル番号の範囲は 1 ~ 65,380) を採用しており、1900 年 1 月 1 日~ 2078 年 12 月 31 日までを表します。一方、Macintosh 版 Excel では、1904 Date System (シリアル番号の範囲は 0 ~ 63,918) を採用しており、1904 年 1 月 1 日~ 2078 年 12 月 31 日までを表します。

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

Null 値

インポート終了時に、処理中に削除または失われたデータに関するエラー メッセージが表示されることがあります。テーブルをデータシート ビューで開いて、一部のフィールド値が空白であることに気付くこともあるでしょう。インポート元の Excel ワークシートの列が書式設定されていない場合、またはインポート元の最初の 8 行に異なるデータ型が混在している場合は、インポート元ワークシートを開いて、以下の操作を行ってください。

  • インポート元の列の書式を設定します。
  • 行を移動して、各列の最初の 8 行に異なるデータ型が混在しないようにします。
  • インポート時に、フィールドごとに適切なデータ型を選択します。データ型が間違っていると、インポート後に列全体に Null 値または不適切な値が格納されることもあり得ます。

上記の操作を行えば、Null 値を目にする機会は格段に減るはずです。しかし、それでもなお Null 値は発生します。以下の表にそのケースを示します。

欠落する可能性のある値 インポート先 インポート先フィールドのデータ型 解決方法
テキスト 新規テーブル 日付 すべてのテキスト値を日付値に置き換えてから、インポート操作をやり直します。
テキスト 既存テーブル 数値または日付値 すべてのテキスト値をインポート先フィールドのデータ型に適合する値に置き換えてから、インポート操作をやり直します。
日付値が数値に置き換えられる

以下に示す状況では、実際の日付値の代わりに一見ランダムと思われる 5 桁の数字が表示されます。

  • インポート元ワークシートの列の最初の 8 行には数値のみが含まれているが、それ以降の一部の行に日付値が含まれている場合。これらの日付値は不適切に変換されます。
  • インポート元の列の最初の 8 行のうちの一部に日付値が含まれていて、それを数値フィールドにインポートしようとした場合。これらの日付値は不適切に変換されます。

これを解決するには、インポート元の列で日付値を数値に置き換えてから、インポート操作をやり直します。

1 つの列のほとんどが日付値で、一部のみテキスト値である場合、すべての日付値が一見ランダムと思われる 5 桁の数字に置き換えられることがあります。これを回避するには、テキスト値を日付に置き換えてから、インポート操作をやり直してください。

数値が日付値に置き換えられる

以下に示す状況では、実際の数値の代わりに一見ランダムと思われる日付値が表示されます。

  • インポート元の列の最初の 8 行には日付値のみが含まれているが、それ以降の一部の行に数値が含まれている場合。これらの数値は不適切に変換されます。
  • インポート元の列の最初の 8 行のうちの一部に数値が含まれていて、それを日付値フィールドにインポートしようとした場合。これらの数値は不適切に変換されます。

これを回避するには、インポート元の列で数値を日付値に置き換えてから、インポート操作をやり直します。

さらに、エラー ログ テーブル (ウィザードの最後の画面に示される) をデータシート ビューで調べるのもよいでしょう。このテーブルには、Error、Field、Row という 3 つのフィールドがあり、1 行が 1 つのエラーに関する情報を示します。このうち、問題のトラブルシューティングに役立つのが、Error フィールドの値です。

表示エラー情報とトラブルシューティングのヒント

エラー 説明
フィールドの切り捨て ファイルの値が、フィールドの "FieldSize/フィールドサイズ" プロパティの設定には大きすぎます。
データ型変換エラー ワークシートの値がフィールドのデータ型と適合しません。この値は、インポート先フィールドでは欠落するか、不適切な値として表示される可能性があります。この問題のトラブルシューティング方法については、1 つ前の表を参照してください。
キー違反 レコードの主キー値が重複しています。同じ主キー値が既にテーブルの中にあります。
入力規則エラー フィールドまたはテーブルに設定されている "ValidationRule/入力規則" プロパティの規則に違反する値です。
入力必須フィールドが Null 値 フィールドの "Required/値要求" プロパティが "Yes/はい" に設定されているため、このフィールドには Null 値を格納できません。
オートナンバー型フィールドが Null 値 オートナンバー型フィールドに追加するためにインポートしようとしているデータに Null 値が含まれています。
解析不能なレコード

テキストの値に、テキスト区切り文字 (通常はニ重引用符 (")) が含まれています。テキスト ファイルの中の区切り文字は、次のように必ず 2 つ重ねて指定します。

"10 - 3 1/2"" disks/box"


ページの先頭へ ページの先頭へ

Excel データにリンクする

Access データベースを別のプログラムのデータにリンクすると、Access で用意されているクエリ ツールとレポート作成ツールを使用できるので、データベースで Excel データのコピーを管理する必要がありません。

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

Access から Excel にリンクする場合の一般的シナリオ

通常、(インポートではなく) Excel ファイルにリンクするのは、以下の理由からです。

  • データは Excel ワークシートで管理し続けたいのですが、Access の強力なクエリ機能、レポート作成機能を利用したいとします。
  • 所属部署では Access を使用していますが、外部データ ソースとして Excel ワークシートを扱うことがあります。外部データについては、コピーを作成することなく Access で処理したいとします。

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

  • Excel から Access データベースへのリンクを作成することはできません。
  • Excel ファイルにリンクすると、Access により新規テーブルが作成されますが、このテーブルのことを通常、リンク テーブルと言います。このテーブルにはソースのワークシートまたは名前付き範囲のデータが表示されますが、データベースに実際にデータが格納されるわけではありません。
  • Excel データをデータベース内の既存データベースにリンクすることはできません。つまり、リンク操作によってデータを既存テーブルに追加することはできません。
  • 1 つのデータベースの中で複数のリンク テーブルを使用できます。
  • Excel データに加えた変更は、リンク テーブルに自動的に反映されます。ただし、Access 側から見た場合、リンク テーブルは読み取り専用であり、その内容や構造に変更を加えることはできません。
  • Excel ブックを Access で開くと ([ファイルを開く] ダイアログ ボックスの [ファイルの種類] ボックスで [Microsoft Excel (*.xls)] を選択し、目的のファイルを選択)、空白のデータベースが作成され、ワークシート リンク ウィザードが自動的に起動します。

Excel データを準備する

  1. リンク対象データがある Excel ファイルのワークシートまたは範囲を探します。ワークシート全体にリンクせずに、リンクする必要のあるセルだけを名前付き範囲として定義することもできます。

表示Excel で名前付き範囲を定義する方法

  1. Excel に切り替え、名前付き範囲を定義するワークシートを表示します。
  2. リンク対象データが格納されているセルの範囲を選択します。
  3. 選択した範囲内を右クリックし、[範囲に名前を付ける] をクリックします。
  4. [新しい名前] ダイアログ ボックスの [名前] ボックスに範囲の名前を指定し、[OK] をクリックします。

1 回のリンク操作でリンクできるのは、1 つのワークシートまたは範囲のみです。ブック内の複数の場所にあるデータにリンクするには、ワークシートまたは範囲の数だけリンク操作を繰り返してください。

  1. ソース データを調べ、この表の説明に従って必要な処理を行います。
要素 説明
結合されたセル 結合されたセルがリンク対象に含まれていないかどうか、確認する必要があります。結合されたセルが含まれている場合、そのセルのデータは左端の列に対応するフィールドに格納され、それ以外のフィールドは空白になります。
列と行の除外 リンク操作を行う際に、特定の列や行を除外することはできません。その代わり、リンク操作後に、リンク テーブルをデータシート ビューで開いて、特定のフィールドを非表示にしたり、特定のレコードをフィルタで除外することはできます。
列数 リンク対象の列数は 255 を超えることはできません。
空白の列、行、セル Excel ワークシートまたはセル範囲には不要な空白の列やセルがないようにしてください。入力漏れのセルがある場合は、正しいデータを入力してください。
エラー値 ワークシートまたは範囲の中にエラー値が含まれているセルが 1 つでもある場合は、リンク操作を開始する前にそれらの値を修正する必要があります。リンク対象のワークシートまたは範囲にエラー値が含まれていると、テーブル内の対応するフィールドには Null 値が格納されます。
データ型

リンク テーブルのフィールドのデータ型およびサイズは変更することができません。リンク操作を開始する前に、各列とも 1 種類のデータ型のデータのみ格納されていることを確認してください。

1 つの列の中に複数のデータ型が混在している場合は書式設定を行うことを強くお勧めします。たとえば、ワークシートの FlightNo 列には、871、AA90、171 などの数値とテキスト値が入力されている可能性があります。これらの値が Null 値または不適切な値となることがないようにするため、次の操作を行ってください。

  1. 列見出しを右クリックして [セルの書式設定] をクリックします。
  2. [表示形式] タブの [分類] で、書式を選択します。
  3. [OK] をクリックします。
最初の行 ワークシートまたは名前付き範囲の最初の行に列名が格納されている場合は、リンク時に最初の行のデータがフィールド名として処理されるよう Access で指定するとよいでしょう。ワークシートで列名が使われていない場合、または、列名の中に Access のフィールド命名規則に違反しているものがある場合は、それぞれの対応するフィールドに有効な名前が割り当てられます。
  1. リンク対象ファイル (開いている場合) を閉じます。

リンク先のデータベースを準備する

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

既存データベースにリンクを格納したくない場合は、空白のデータベースを作成してください。

ボタン イメージ (Microsoft Office ボタン) をクリックし、[新規作成] をクリックします。

これでリンク操作を開始する準備が整いました。

リンクを作成する

  1. [外部データ] タブの [インポート] で [Excel] をクリックします。ボタン イメージ

 メモ   [外部データ] タブは、データベースが開いていない場合は表示されません。

  1. [外部データの取り込み - Excel ワークシート] ダイアログ ボックスの [ファイル名] ボックスに、Excel ソース ファイルの名前を指定します。
  2. [リンク テーブルを作成してソース データにリンクする] をクリックし、[OK] をクリックします。

ワークシート リンク ウィザードが起動して、リンク操作の手順を実行できます。

  1. ウィザードの最初のページで、ワークシートまたは名前付き範囲を選択し、[次へ] をクリックします。
  2. インポート対象のワークシートまたは範囲で列名が使用されている場合は、[先頭行をフィールド名として使う] を選択します。これらの列名はテーブルのフィールド名として使用されます。ただし、特殊文字が含まれている列名はフィールド名としては使用できません。その場合は、エラー メッセージが表示され、Access によって有効な名前が割り当てられます。[OK] をクリックして処理を続行します。
  3. ウィザードの最後のページで、リンク テーブルの名前を指定し、[完了] をクリックします。ここで指定した名前が既存テーブルのものと重複する場合は、既存ファイルを上書きするかどうかの確認を求められます。既存ファイルを上書きするには [はい] を、別のファイル名を指定するには [いいえ] をクリックします。

Access により、リンク テーブルが作成されます。作成に成功すると、"テーブルをリンクしました" という内容のメッセージが表示されます。作成されたリンク テーブルを開き、すべてのフィールドに正しいデータが取り込まれていることを確認してください。

エラー値または正しくないデータが見つかった場合は、ソース データのトラブルシューティングが必要です。エラー値または不適切な値のトラブルシューティングについては、次のセクションを参照してください。

ページの先頭へ ページの先頭へ

リンク テーブルにおける #Num! 値などの不適切な値のトラブルシューティング

"テーブルをリンクしました" という内容のメッセージが表示された場合でも、テーブルをデータシート ビューで開き、行と列に正しいデータが表示されているかを確認することをお勧めします。

テーブル内にエラーまたは不正確なデータが見つかった場合は、以下の表に示すアクションを実行してから、リンク操作をやり直してください。リンク テーブルには、値を直接追加することはできません (読み取り専用です)。

問題の種類 解決法
グラフィカル要素 Excel ワークシートに表示されるグラフィカル要素 (ロゴ、グラフ、図など) については、Access との間でリンクを張ることはできません。
表示形式 値がデータシート ビューで正しく表示されるようにするには、デザイン ビューでフィールドの "Format/書式" プロパティを設定しなければならない場合もあります。
計算値 列またはセルの計算結果は対応するフィールドに表示されますが、Access ではその計算式は表示されません。
切り捨てられるテキスト値 データシート ビューで列の幅を広げます。それでも値が完全には表示されない場合は、その値が 255 文字を超えている可能性があります (Access でリンクを張れるのは、最初の 255 文字までです)。その場合は、データをリンクするのではなく、インポートする必要があります。
数値フィールドのオーバーフロー エラー メッセージ リンク テーブルが正しく表示されたように見えても、後でそのテーブルに対してクエリを実行すると、数値フィールド オーバーフローのエラー メッセージが表示されることがあります。これは、リンク テーブルのフィールドのデータ型と、そのフィールドに表示されるデータの型が一致していないのが原因です。
True/False および -1/0 リンク対象のワークシートまたは範囲内に、True/False 値しか格納されていない列がある場合、リンク テーブルにはその列に対応する Yes/No フィールドが作成されます。一方、リンク対象のワークシートまたは範囲内に、-1/0 しか格納されていない列がある場合、既定では、その列に対応する数値フィールドが作成されます。この作成されたフィールドのデータ型を変更することはできません。リンク テーブルに Yes/No フィールドが必要な場合は、リンク対象の列に True/False 値が含まれていることを確認する必要があります。
複数の値 リンク対象の列にセミコロン (;) で区切られた複数の値が格納されていても、1 つのフィールドに複数の値が取り込まれることはありません。値のリストは 1 つの値として扱われ、テキスト フィールドに取り込まれます。
#Num!

以下の状況下では、実データではなく #Num! エラー値がフィールドに表示されます。

  • リンク対象の列において多数のテキスト値の中に少数の数値または日付値が含まれている場合、数値と日付値は取り込まれません。
  • リンク対象の列において、多数の数値の中に少数のテキスト値が含まれている場合、テキスト値は取り込まれません。
  • リンク対象の列において、多数の日付値の中に少数のテキスト値が含まれている場合、テキスト値は取り込まれません。

テーブル内から Null 値をできるだけ減らすには、次の操作を行います。

  1. リンク対象の列において、異なるデータ型が混在していないことを確認します。
  2. Excel ファイルでその列の書式を設定します。
  3. リンク操作時に、各フィールドに正しいデータ型を指定します。データ型が合っていないと、列のすべての行に #Num! 値が表示されるということもあり得ます。
日付値が数値に置き換えられる フィールドに一見ランダムな 5 桁の数値が表示される場合は、リンク対象の列において、多数の数値の中に少数の日付値が混在していないかを確認してください。数値列の中の日付値は、数値へと不適切に変換されます。日付値を数値に置き換えてから、リンク操作をやり直します。
数値が日付値に置き換えられる フィールドに一見ランダムな日付値が表示される場合は、リンク対象の列において、多数の日付値の中に少数の数値が混在していないかを確認してください。日付列の中の数値は、日付へと不適切に変換されます。数値を日付値に置き換えてから、リンク操作をやり直します。

ページの先頭へ ページの先頭へ

 
 
適用対象:
Access 2007