プロが教える店舗&オフィスのセキュリティ対策術

       エクセル           Access
   A列   B列  C列      フェールド名  人 りんご みかん ばなな キャベツ
   リンゴ  3   木村               木村  3    2
   みかん  2   木村             小林             4
   ばなな  4  小林               青木                   2
   キャベツ 2  青木

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

A 回答 (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★★;

のクエリを作って、実行すれば良いと思います。
ただ、出来上がったテーブルで何かしたい・・・
今後使い難いと思いますけど・・・(見るだけ用途なら良いかも)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!