- 締切済み
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は中級くらいかと思います。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- 30246kiku
- ベストアンサー率73% (370/504)
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★★; のクエリを作って、実行すれば良いと思います。 ただ、出来上がったテーブルで何かしたい・・・ 今後使い難いと思いますけど・・・(見るだけ用途なら良いかも)