• ベストアンサー

エクセルデータをアクセスにするには

アクセスかなりの初心者です。従業員の教育履歴のファイルをアクセスで作成する予定です。 過去にエクセルで作った教育履歴のデータがいろいろあるので、それを利用して入力の手間を省きたいと思います。アクセスのファイルを作成してそれにエクセルのデータをインポートする方法でよいのでしょうか。それともエクセルからアクセスに移行する方法がよいのでしょうか。また、その際に気をつけること、事前に勉強しておいた方がいいことがあったら、教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
noname#79209
noname#79209
回答No.9

#5です。 結構クリアしなければならない関門がありますね。 エクセルでの管理から、アクセスでの管理に移行するのであれば、 インポートは最初の一回だけの作業ですね。 > シートは外部セミナーの受講記録、社内研修の受講記録、資格取得の記録、通信教育の受講履歴 ならば、むしろそれぞれ別テーブルのほうが良いと思われます。 ただし、個人を特定するような項目は、[従業員ID]以外は不要です。 その代わり、[従業員マスター]テーブルを別途用意すべきです。 > 教育訓練・資格取得の記録を一元化したい > ユニオンクエリしかないのでしょうか。 「一元化」というのは、なにも全ての種類の履歴を一つのテーブルに纏めてしまうことではありません。 「従業員ID」で別々の履歴テーブルをリンクして、一人の従業員の実績を参照できるようにすることが、「一元化」の第一歩です。 質問者さんがアクセスで、どのような管理をするのかというDB設計がキーポイントです。 それにより、追加のテーブルや、個々のテーブルの項目が決まってきます。 忘れないでほしいのは、 1.エクセルのシステムをアクセスに移行するのではなく、アクセスで実績管理のシステムを作成する。  そのためには、アクセスにどんな項目のテーブルが必要かを検討する。 2.エクセルの各シートは、あくまで元データとして割り切る。 というスタンスです。 また、VBAの知識は今後必須項目となるでしょう。

brooke
質問者

お礼

ありがとうございました。 頂いたアドバイスを参考に、とりあえずやってみます。

その他の回答 (8)

noname#79209
noname#79209
回答No.8

#5、7です。 「別テーブルから参照する」で注意点が抜けていました。 「売上実績表」などで、「商品コードさえあれば、単価は『単価表』から引っ張れるし、金額も同時に計算させよう」と [売上日][商品コード][数量] としてしまうと、単価が変更になったとき、変更前の売上データまで新価格で金額が計算されてしまいます。 ここは、あえて[単価][金額]項目を設けておくべきです。 また、[金額]項目も加えるのは、売上データが膨大である場合、その都度個々に[単価]×[数量]で計算させていると、非常に時間がかかってしまうからです。 ご参考まで...

brooke
質問者

お礼

ありがとうございました。何となくイメージがわいてきました。

noname#79209
noname#79209
回答No.7

#5です。 > 何個かのエクセルのファイルをインポートすると全部別々のテーブルになってしまいます。 それぞれのシートの列構成が同じであるなら、2つめ以降のシートをインポートするときに、 「新規のテーブル」を選択せず、1つめのシートをインポートした時に作られたテーブルへインポートすれば良いはずです。 > アクセスはなるべくテーブルを分割した方がいい 同じ構成のテーブルを複数に分割して持つのは、却って良くないです。テータベースの意味がなくなります。 「分割した方がいい」と言うのは、「別の表から参照できるような項目はダブって持つべきではない」という意味です。 例えば、学校のテストの結果のテーブルで、 [学生番号][氏名][実施日][科目][点数] の[氏名]項目は無駄だと言うことです。 別途「学生名簿」というテーブルを設けておけば、クエリーで学生番号をキーに氏名を持ってくることが出来ます。 また、「先生、僕の名前は田中二郎でなく田中次郎です」と言われたとき、 「成績テーブル」の[氏名]項目の「田中二郎」を全て「田中次郎」へ変更する作業をしなければなりません。 別テーブルにしておけば、その「学生名簿」の一ヶ所を変更するだけで済みます。

brooke
質問者

お礼

度々アドバイスありがとうございます。それぞれのシートの列構成が同じなら1つのテーブルにインポートできるのですが、列構成が違います。例えば、シートは外部セミナーの受講記録、社内研修の受講記録、資格取得の記録、通信教育の受講履歴、という様な感じで、入力項目もそれぞれ微妙に違っています。これらのシートを全てまとめて、1人の人がこれまで受けた教育訓練・資格取得の記録を一元化したいのですが、ユニオンクエリしかないのでしょうか。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.6

>エクセルのシートが何個かあり フィールドの個数とデータ型が同じなら ユニオンクエリで縦に結合できます そのときにどのシートからのデータかを現すフィールドを付け加えます ただしユニオンクエリはクエリデザインビューでは作れません SQLで書いてやることになります ヘルプを見てわからなければ、本を買うことになるかな

noname#79209
noname#79209
回答No.5

他の方々言われるように、エクセルからアクセスへのインポートは物理的には可能です。 しかしながら,#4さんが言われるように、「そのまま利用できるか?」というと「NO」です。 例えば、1つのシート内でレイアウトが異なる表が複数存在すると、全くダメです。 > Accessをやる場合Excelでの知識はむしろ邪魔になります これも正しいです。 例えば、エクセルの経験者はデータを横展開しがちです。 日付をヨコに配置したりします。 あるいは、以下のように同じ種類のデータを横展開します。    A  B  C  D 1 氏名  英語 数学 国語 2 田中  80 60 70 3 鈴木  50 70 30 アクセスでは  氏名  科目  点数  田中  英語  80  田中  数学  60  田中  国語  70  鈴木  英語  60  鈴木  数学  70  鈴木  国語  30 のように設計します。エクセルでもデータベース的に使いたい場合は、 アクセス的な配置にしないと、うまく検索出来なかったりします。 ご参考まで...

brooke
質問者

お礼

初心者にもわかりやすいご説明ありがとうございます。 ところで、何個かのエクセルのファイルをインポートすると全部別々のテーブルになってしまいます。アクセスはなるべくテーブルを分割した方がいいと、マニュアルなどで見かけるのですが、1つにできないのでしょうか。アドバイス頂ければ幸いです。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.4

Accessはデータベース、Excelは表計算両者は全くジャンルの異なるソフトです 従ってExcelのデータを取り込んでそのまま利用できるということはまず無理です Access用に加工してやる必要があります Excelからのインポートをやりやすくするには Excelのほうでデータを[リスト]と呼ばれる形式に整えておきます >事前に勉強しておいた方がいいことがあったら、教えて下さい。 Accessをやる場合Excelでの知識はむしろ邪魔になります 全く異なったやり方をするものだということが納得できるまで Accessについて勉強してからはじめたほうがいいですよ

brooke
質問者

お礼

アドバイスありがとうございました。一応成功はしたのですが、 エクセルのシートが何個かあり、それぞれ違う項目が含まれているのですが、それら全部のシートをアクセスで一つのテーブルにまとめたいのですが、無理でしょうか。教えて頂けると幸いです。

  • gatt_mk
  • ベストアンサー率29% (356/1220)
回答No.3

ExcelのデータをAccessに取込む際にはデータ形式に問題が発生する場合があります。Excelのセルのデータは通常は「標準」という形式になっています。これは入力されているデータの種類によって文字列であったり、数字であったり、日付であったり様々な形式を自動的に判定してくれます。 しかしAccessのテーブルにデータを格納する場合は、各フィールドのデータ形式が固定されます。従って数字形式(整数や長整数等)と指定されたフィールドに文字列を取込もうとすれば必然的にエラーになります。ウィザードなどでExcelからデータをインポートする際には、見出し行から数行のセルの値がどのような形式の値かによって、自動的にフィールドのデータ形式が決められます。複数のデータ形式の内容があればテキスト形式などになります。Access側では同じ列のデータは、すべて同じデータ形式として判断され処理されますので、最初の方に数字が入っていて、後半に文字列が入っていたりすると、数字データとして取込がされて後半の文字列がエラーになる場合もあります。 インポートする場合にはフィールドのデータ形式の指定ができますので、データを取込む際に各列のデータ形式に注意する必要があります。

brooke
質問者

お礼

アドバイスありがとうございます。 データ形式に注意してインポートをしてみたら、成功しました。 いろいろなエクセルのシートをインポートすると、それが全部それぞれ別のテーブルになってしまうのですが、1つのテーブルにまとめたいのですが、無理でしょうか。

  • yossy0426
  • ベストアンサー率24% (32/130)
回答No.2

どうもです。 エクセルのデーターを活用するには 1.エクセルデーターをインポート 2.エクセルに対してリンクを貼る の方法があると思います。 インポート時の注意点はACCESSテーブルとエクセルのデーターが同じ型かどうかだと思います。 エクセルデーターが文字列で 00123 ACCESSテーブルが数値の場合 123 になってしまいます。 まぁ1回きりのデーター移行(手動)であればインポート時のウィザードでフィールドの型をキチンとやれば簡単に出来ると思います。 ちなみに、2のリンクはエクセルのデーターに対して追加しないとデーターは増えません・・・・・ がんばって下さい。

brooke
質問者

お礼

アドバイスありがとうございます。 リンクの方が難しそうですので、いったんエクセルのデータをアクセスにインポートしたら、アクセスで管理していこうと思います。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

インポートするのは簡単ですが、アクセスのデータベースのデザインと整合性が無ければ無意味な物になりかねません。 エクセルのデータフォーマットを元にするのなら問題は無いでしょう。 アクセスで別なフォーマットを作成するのなら、同一のフォーマットになるようなデータに加工してからインポートする方が良いと思います。

brooke
質問者

お礼

早速のご回答ありがとうございました。やってみます。

関連するQ&A