• 締切済み

ExcelデータをAccessに取得させる方法

       エクセル           Access    A列   B列  C列      フェールド名  人 りんご みかん ばなな キャベツ    リンゴ  3   木村               木村  3    2    みかん  2   木村             小林             4    ばなな  4  小林               青木                   2    キャベツ 2  青木 のようにエクセルのデータでA列をAccessのフィールド名にし、もし無ければ、その項目名(りんご等)をフィールド名に追加させ、上の右図のようにAccessにデータを取得させるコードを作りたいと考えてます。  取得させる場合はExcellではなく、Access VBAで取得させたいです。  どんなコードを書いたらよろしいのですか?  分かる方がおられましたら、よろしくご指導くだされとうれしいです。  私のVBAのレベルですが、Access VBAは今回初めてで、Excel VBAは中級くらいかと思います。  よろしくお願いします。

みんなの回答

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.1

VBA は必要ないと思います。 Excel ファイルの拡張子を「xls」と仮定します。 また、対象は「Sheet1」で、1行目に見出しがないデータとなっている。 Access 側のクエリをSQLビューにして、以下を記述し表示してみます。 TRANSFORM SUM(F2) AS 合計 SELECT F3 AS 人 FROM [Sheet1$] IN 'Excelファイルのフルパス'[Excel 8.0;HDR=NO] GROUP BY F3 PIVOT F1; Excelファイルのフルパスが D:\Hoge\hogehoge.xls だったら TRANSFORM SUM(F2) AS 合計 SELECT F3 AS 人 FROM [Sheet1$] IN 'D:\Hoge\hogehoge.xls'[Excel 8.0;HDR=NO] GROUP BY F3 PIVOT F1; Excel Sheet1 の1行目に見出しがない事を HDR=NO で指定すると、 A列 ~ は、F1,F2・・・で参照できます。 指定した「Excelファイルのフルパス」の「Sheet1$」(シート名+$)をみて、 F3 でグループ化しますよ。 その時、F1 で項目をまとめてください。 値の部分は、F2 を合計してください。 これは、クロス集計の内容となってます。 ※ 拡張子と連動する変更箇所 「xls」-「Excel 8.0」 「xlsx」-「Excel 12.0 Xml」 「xlsm」-「Excel 12.0 Xml」 「xlsb」-「Excel 12.0」 ※ Access 2007以降であれば上記拡張子は全部指定できると思いますが 2007以前の Access では xls のみ と思います。 ※ もし、この内容でテーブルを作りたいのであれば   上記クエリ名を「Q★★」としていたとすると、 SELECT * INTO 作りたいテーブル名 FROM Q★★; のクエリを作って、実行すれば良いと思います。 ただ、出来上がったテーブルで何かしたい・・・ 今後使い難いと思いますけど・・・(見るだけ用途なら良いかも)