• ベストアンサー

ACCESSの既存テーブルに、EXCELデータをレコードとして追加する事は可能ですか?

ACCESSの既存テーブルに、EXCELのデータをレコードとして追加する方法はありますか? 又は方法を説明しているサイト等ありましたら教えて下さい。 EXCELのデータは、シートの1行目に各項目名、2行目以降に各データが順次入力されている状態です。 尚、EXCELの項目名と、ACCESSのフィールド名は一致していない状態です。 例えば、 EXCELの項目名:「予約ID」、「予約名」、「予約日」 ACCESSのフィールド名:「rsv_id」、「rsv_name」、「rsv_date」 のような感じです。 ACCESSのフィールド「rsv_id」には、EXCELの「予約ID」項目のデータを入れなければいけません。 こういうことは出来るのでしょうか? ※マクロは使わないようにしたいです。 いったんACCESS上で、EXCELのデータを元に新規テーブルを作成してから、 その新規テーブルからデータを抽出して、既存テーブルにレコード追加するような、SQLを書けばできるでしょうか?

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

1.Excelのデータを、Accessにインポートします。 2.クエリ/新規作成/デザインビュー、テーブルの表示で、1でインポートしたテーブル(T_Excelとします)を設定し、各フィールドをクエリのデザイングリッドにドラッグします。 3.ツールバーのクエリの種類で、追加クエリを指定すると、追加先のテーブルを訊いてくるので、既存テーブル(T_Access)を指定します。 4.レコードの追加欄に、対応する既存テーブルのフィールド名を指定します(選択肢が表示されますので、そこから選択します) 5.ツールバーの「!」アイコンをクリックするか、クエリを一旦保存・終了後、ダブルクリックして実行すると、レコードが追加されます。 SQLを表示させると、下記の様になりました。 INSERT INTO T_Access ( rsv_id, rsv_name, rsv_date ) SELECT T_Excel.予約ID, T_Excel.予約名, T_Excel.予約日 FROM T_Excel;

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

ACCESSVBAが判らんので>※マクロは使わないようにしたいです、 となっているのでしょうが、下記程度なら、ACCESSのマクロ(VBAは別にあるがそれではない)の1行(1操作程度に当たる)をコード化したようなもので簡単である。 良ければ使うことを考えてみては。 ーー ACCESSのオブジェクトにモジュールがあるが、そに貼り付けて実行。 Sub test05() DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _ "社員7", "C:\Documents and Settings\xxxx\My Documents\01化.xls", True, "Sheet2!A1:C7" End Sub ACCESSのテーブル名、エクセルのパス名+ブック名、シート名、データセル範囲について質問者の場合に置きかえるやり方はわかると思う。 注意事項は (1)エクセルデータ第1行目には、項目見出しをACCESSのフィールド名と合致するよう入れる。 (2)エクセルの項目見出しの順序は、ACCESSのテーブルのフィールド名の順序と一致して無くてよい。エクセルデータ側が、全フィールドの一部でも良い。 (3)実行するごとに、アクセスのテーブル側でエクセルのレコードが累積するので、そのつもりで実行のこと。 1回限りで使うなら良いが、他人を巻き込んでのシステムでは使いづらいかも。ACCESS辺りになると、VBAが使えないと、他人を巻き込んでのシステムは作れないだろう。