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

解決済みの質問

Excel→Access VBAによるインポート

1つのExcelファイルの複数のデータシートをAccess2000にインポートしたい。

【説明】
data.xlsという名前のExcel2000で作成したファイルがあり、その中に同じ書式(列)を
持ったSheetが20枚ほどあります。
それらのデータをAccess2000にインポートしたいのですが、
1.作業は毎月発生する。
2.ほかのユーザも出来るようにする。
などの理由から、マクロかVBAを使って自動化できればと考えています。

ぽちっとボタンを押すと、data.xlsのすべてのシートからデータをインポートし、
それぞれのSheet名がついたテーブルに格納されるというのが理想です。
フィールド名は固定ですので、あらかじめテーブルを作っておくことは出来ます。
Excelの各シートの上部数行は見出しやら説明文が書いてありますので、
インポートの際にその部分の行(5行分)を削除することが必要です。


当方VBAの知識はほぼ皆無ですので、やんわりご教示頂ければ幸いです。
よろしくお願いいたします。

(次回ネットに入るのは15日以降です)

投稿日時 - 2003-10-12 07:26:41

QNo.677381

困ってます

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

しょっぱなから動かないのは参照設定の問題でしょう。
アクセスで他のDLLファイルを利用した機能を使うときに必要です。
http://www.accessclub.jp/beginer/tips/tips_32.htm

フィールド名の部分はより具体的に書くなら
こんな感じになります。
---
With rst
.AddNew
!氏名 = "太郎"
!住所 = "東京都"
.Update
End With
---
これであるテーブルの氏名欄に「太郎」住所欄に「東京都」が入る訳です。
で今回の場合はエクセルのとあるシートのとあるセルの値がアクセスのテーブルに入るんですよね?
ですから
"太郎"の部分が、Worksheets("Sheet1").Range("A1")とかになる訳で。

ループや変数扱い方がよく分からないのなら全て決め打ちにするしかないでしょう
!氏名 = Worksheets("Sheet1").Range("A1")
!住所 = Worksheets("Sheet1").Range("A2")
!電話 = Worksheets("Sheet1").Range("A3")
というような感じで。

よく分かるようになったら数行でまとめられるようになります。が流石にそれは自分で勉強して下さい。

投稿日時 - 2003-10-25 01:46:32

お礼

ご指摘のとおり、ライブラリにDAOが組み込まれていませんでした。
組み込み後は動くようになりました。
まだ完成にはほど遠いですが、いったんクローズします。

投稿日時 - 2003-10-29 20:36:02

ANo.2

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

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

回答(2)

ANo.1

まぁアプローチの方法はいろいろあるんですけど。
おそらく一番簡単な方法である「DAO」で。
Dim dbs As database
Dim rst As Recordset

Set dbs = OpenDatabase("アクセスファイルへのパス")
Set rst = dbs.OpenRecordset("テーブル名",
dbOpenTable)
'「テーブル名」は自分でつけたテーブルの名前
'「アクセルへのパスは」「C:\test\test.mdb」とかこんな感じ。

With rst
.AddNew
!フィールド名1 = Range("A1").Value)
!フィールド名2 = Range("B1").Value)
.Update
End With
'フィールド名はテーブルの項目名のこと
'実際はWith内のコードはループさせたりするほうが便利
'Range("A1")の部分も該当部に修正。こちらも上と同様変数にした方が便利。

rst.Close
Set rst = Nothing
Set dbs = Nothing
'お約束の終了宣言

---
ループや変数の扱いについてはVBAに限らずプログラムの基礎ですので、ここぐらいは独学でも勉強された方が良いかと思います。

投稿日時 - 2003-10-12 12:25:28

補足

popesyuさん、お返事ありがとうございます。
返事が遅くなり申し訳ありません。

ええと、これはExcelに記述するコードですね?
試したところ、一行目で「コンパイルエラー:ユーザー定義型は定義されていません」
と怒られてしまいました。
ここから先に進めません。
あと、"!フィールド名1"の個所ですが、ここも今ひとつ分かっていません。

良きアドバイスをお待ちしております。

投稿日時 - 2003-10-24 20:51:30

あなたにオススメの質問