インポートとリンクテーブル

 テーブルに記録しようとするデータが既に別のファイル等として存在しているのであれば、いちいち手入力していくのではなく一括してテーブルに取り込んでしまうのが便利です。
 テキストファイルの取り込みや他のデータベースソフトからの取り込みも可能ですが、ここでは代表的な例としてExcelファイルから取り込みの例を紹介します。

手動コピーペースト

 さて、メニューとしてのインポートを試す前に、コピーペーストによるデータの取り込みを試してみます。単純ですがこれも有効な方法です。

 ExcelのこのようなシートをAccessのテーブルにコピーペーストすることとします。ここで、Accessのテーブルにした際に主キーとなるのは「会員番号」であることに注意してください。


 まずAccessのテーブルデザインで受け皿となるテーブルを作ります。設定するのは主キーである「会員番号」のみで大丈夫です。ここで主キーの設定をしていないと、後でペーストした際にExcelの最初の行が列名として扱われず、うまくいきません。なお、もとのExcelシートの段階で主キーとすべき列がない場合は、適当にそのような列を作っておくのが対策です。


 そしてExcelシート上のデータをコピーして…


 (テーブルの左上の部分をクリックするなどして)全列を選択した状態でペーストすると…


 Excelの最初の行を列名としたうえで、きちんとデータを取り込むことができました。


 データ型はデータの内容に応じて自動的に設定されますが、意図したとおりとは限りませんので確認する必要があります。


インポート

 メニューに従ってデータの取り込みを行う正式なインポートの方法です。「外部データ」のタブをクリックし、「インポートとリンク」の「Excel」をクリックします。


 データの保存方法とメニューファイル選択のためのウインドウが現れます。保存方法については、インポートしたデータを新しいテーブルとして保存するため「現在のデータベースの新しいテーブルにソースデータをインポートする」(デフォルト)とします。次に「参照」をクリックして…


 対象となるExcelファイルを選択します。先ほどのウインドウ(一つ前の画像)に戻りますので「OK」をクリックします。


 さらに対象となるシートを選択して次に進みます。


 Excelシートにおいて適切に列名が定義されていた場合は「先頭行をフィールド名として使う」にチェックが自動的に入っていますのでそのまま次に進みます。
 ここでうまくこのオプションが機能しないようだと、その後インポートができたとしても列の設定をしなおすのが面倒ですので、一度中止してExcelファイルに戻り列名をきちんとつけた方がよいと思います。


 インデックスやデータ型の設定が行えます。後で直すことも出来ますがここで確認しておくのが無難です。


 主キーの設定も行えます。


 あとはテーブル名を決めて終了です。


 テーブルをデータシートビューで開いた様子です。無事にインポートができていることがわかります。


リンクテーブル

 インポートでは外部のファイルをAccessのテーブルに取り込ましたが、もとのファイルとAccessのテーブルはその時点で別のものとなります。もとのファイルを変更してもAccessのテーブルは変更されませんし、Accessのテーブルを変更してももとのファイルは変更されません。
 一方、ファイルをテーブルとして取り込むのではなく、そのファイルのまま直接参照してテーブルのごとく扱うという方法があり、これをリンクテーブルといいます。この場合、Accessにデータの内容そのものは取り込まれていませんので、データを変更しようとするときはもとのファイルを開いて変更する必要があります。
 リンクテーブルもインポートの一種として扱われていますが、ここではあえて区別して紹介します。

 始め方は上記のインポートと同じです。「外部データ」のタブをクリックし、「インポートとリンク」の「Excel」をクリックします。


 データの保存方法として「リンクテーブルを作成してソースデータにリンクする」を選び、対象となるファイルを選択して次に進みます。


 あとは指示通りに進むだけです。テーブルに取り込んでいるわけではありませんので、上記のインポートの例と違ってデータ型や主キーの設定画面は現れません。


 完了するとテーブルはこのようなアイコンで表示されます。


 開いてみると見た目はインポートしたのと変わりありません。しかし、このデータシートビュー上でこのデータの内容を変更することはできません。変更したい場合はもとのExcelファイルの方を開いて変更する必要があります。


 リンクテーブルを用いた場合、データをAccess側から変更することはできませんし、データ型の設定や主キーの設定などもできません。また、後で紹介する参照整合性などの設定もできません。一見不便ですが、こうした設定そのものが不要な場合は設定の手間が省けるぶん便利です。
 具体的にどういう場合に便利なのかというと、どこか外部から定期的に受け取る定型のファイルに基づいてクエリやレポートを作って出力する、という場合が考えられます。一度リンクテーブル(とクエリやレポート)の設定さえしておけば、あとはファイルを差し替えるだけクエリやレポートに反映されますので、いちいちインポートを行う手間が省けるというわけです。