こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

access vba インポートについて

別のところで質問したのですが、回答が得られなかったので
こちらで質問しまする。

昨日、accessをさわリはじめた、おっさん初心者です。

お願い:エクセルのデータをアクセスにインポートしたいです。
     1つのエクセルファイルに複数(30枚)シートがあり、
     それぞれのシート名で、アクセスのテーブルが複数作成できれば良いです。
     アクセスのVBAにどんなコードを書けば良いのでしょうか。

1つのシートの取り込みは、
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8,
”インポート先テーブル名", "ファイル名", True, "シート名" & "!"
(全くわかってませんが、)これでできましたが、この辺がおっさんの限界でした。
色々web見たのですが、難しい・・・とりあえず、やさしく教えてください。

(1)フィールド名ごとインポートする方法

(2)すでに存在するテーブルにデータを継ぎ足す方法

テーブル”A”には
 日付     獲物    調理    感想  
1月1日    きつね   なべ    にがい 
1月2日    もぐら   からあげ  まずい
1月3日    ぱんだ   さしみ   あまい
  
       ↑   ↑   ↑   ↑  ↑
シート ”A”から
1月4日    たぬき   なべ    ばかうま
1月5日    らっこ   ひもの    うまい
を追加

この二つができるとうれしいです。

アクセスは2000です。
エクセルは2000です。
ウィンドウズはXPです。
エクセルは初級程度できます・・・。
基本を理解していなくてもわかる感じで助けてパソコン大先生!!

投稿日時 - 2013-01-11 13:36:41

QNo.7886300

すぐに回答ほしいです

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

Excelブックには以下のように
1行目にフィールドをあらわす項目名があるとして

 日付     獲物    調理    感想  
1月4日    たぬき   なべ    ばかうま
1月5日    らっこ   ひもの    うまい

DドライブにあるTEST.xlsから
インポートする(2)の方法について

Sub try()
Dim xlApp As Object
Dim xlWb As Object
Dim xlWs As Variant

Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
Set xlWb = xlApp.Workbooks.Open("D:\TEST.xls")

For Each xlWs In xlWb.Worksheets

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, _
xlWs.Name, xlWb.FullName, True, xlWs.Name & "!"

Next

xlWb.Close
xlApp.Quit
Set xlWb = Nothing
Set xlApp = Nothing

End Sub

こんな感じでも出来ましたよ。
⇒ただしAccessの経験は皆無で
質問にあったヒントを基に
かじった事のあるExcelVBAで
作成したものですので、
詳しくはわかりませんけど・・・・・

(1)についてはちょっと不明です。

投稿日時 - 2013-01-11 21:58:45

お礼

有難うございます!!
set とか for each in を調べたりして解決できました。
本当に難しい。

投稿日時 - 2013-01-13 11:59:15

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問