- ベストアンサー
エクセルからアクセスへ
お世話になります。 エクセルからVBAでアクセスのテーブルに レコードを追加させたいのですが、 下記の記述でいきなり mydb as database の所が 青く塗られ 「コンパイルエラー:ユーザー定義型は定義されていません」 とエラーになってしまします。 また、databaseのdが小文字なのも気になります。 参照設定での項目チェックが必要なんだと思うのですが どこにチェックしたら良いのか、またそれだけではダメなのか 分かりません。 どなたかご教授下さい。 記 Dim mydb As database Dim myrs As Recordset Dim myrnge As Range Dim myrow As Long
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
データベース操作 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_130.html こちらが参考になるのでは?
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17070)
アクセス側で、それも操作でやれば簡単なのに。 ACCESSVBAでもエクセルからなどのインポートがある。 エクセル側から、VBAでやるというのは、勉強・練習のためか。 背伸びしてないですか。課題丸投げに近いが、やってみたから、まあ例示を挙げておく。 DAOの方でやっているが、ADOとかは似ているし、SQLでも出来るとおもうが、その中でDAOが易しいかな。WEBを調べれば判るよ。 実行前に、参照設定 - Microsoft DAO 3.X Object Libraryにチェックを行うこと。 ーー Sub test02() 'VBE - ツール - 参照設定 - Microsoft DAO 3.X Object Libraryにチェック Dim rs As DAO.Recordset Dim db As DAO.Database Set ac = CreateObject("Access.Application") Set db = OpenDatabase("db2.mdb") Set rs = db.OpenRecordset("生徒") MsgBox "フィールド数=" & rs.Fields.Count rs.MoveLast rs.AddNew rs.Fields(2) = "山村" rs.Fields(3) = "岡山" rs.Fields(4) = "元町小学校" rs.Fields(5) = 4 rs.Update End Sub 私の場合「db2」というmdbがあり 「生徒」というテーブルがあり ID 生徒番号 氏名 県 学校 学年 7 8 上村 東京 山田南小学校 2 というようなフィールド構成になっていて、そこの最終の次にに追加 した例。テスト済み。 質問者の場合に合わせてやってみてください。 あとエクセルのシートの値との関連など判るだろう。省略。 エクセルの世界でやっているから、フィールドに代入するコードの右辺に=(シート指定).Cells(i,j) で済むし、MoveLastの次からのAddnewをForNextででも繰り返すと出来るだろう。
お礼
うまくいきました。 ありがとうございます。
- tom11
- ベストアンサー率53% (134/251)
こんにちは、 ODBCで、接続して、コーディングしてみては、 いかがですか。??? http://www.geocities.jp/tomtomf/index.html
お礼
参考になりました。 ありがとうございます。
お礼
参考になりました。 ありがとうございます。