演習33 「DAO」 の解説 その3


演習32 と同様、最初に Excel VBA の VBエディタ において、次の設定を行う。
 VBE - ツール - 参照設定 - (レ)Microsoft DAO 3.6 Object Library

標準モジュールに、以下のプロシージャを記述し実行すると、Access のデータ
ベースファイルを自動的に新規作成し、さらに新規作成したテーブルに Excel
のシート上のデータを転記することができる。


  ==> 
Sub Excel_Access5() Dim Ndbs As DAO.Database 'アクセス ファイル設定 Dim Ntbl As DAO.TableDef 'アクセス テーブル定義 Dim Nfld As DAO.Field 'アクセス フィールド定義 Dim Nrcs As DAO.Recordset 'アクセス フィールド定義 Dim wks As Excel.Worksheet 'エクセル シート指定 Dim mtr As Variant 'エクセル 全データ Dim rcd As Integer 'アクセス 行指定 Dim fld As Integer 'アクセス 列指定 '例として acctest3.mdb を C:\直下に新規作成する 'ファイルおよびテーブル・フィールドも新規作成する '新規: acctest3.mdb, テーブル5, 数値D, 数値E, 文字F Set wks = ThisWorkbook.Worksheets("Sheet1") Set Ndbs = CreateDatabase("C:\acctest3.mdb", dbLangJapanese) Set Ntbl = Ndbs.CreateTableDef("テーブル5") Set Nfld = Ntbl.CreateField("数値D", dbInteger) Ntbl.Fields.Append Nfld 'フィールドをテーブルに新規追加 '整数型(dbInteger) Set Nfld = Ntbl.CreateField("数値E", dbInteger) Ntbl.Fields.Append Nfld 'フィールドをテーブルに新規追加 '整数型(dbInteger) Set Nfld = Ntbl.CreateField("文字F", dbText, 60) Ntbl.Fields.Append Nfld 'フィールドをテーブルに新規追加 '文字型(dbText) Ndbs.TableDefs.Append Ntbl 'テーブルにデータを転送する Set Nrcs = Ndbs.OpenRecordSet("テーブル5", dbOpenTable) 'テーブルを開く 'For rcd = 2 To 6 ' With Nrcs ' .AddNew ' !数値D = wks.Cells(rcd, 1) ' !数値E = wks.Cells(rcd, 2) ' !文字F = wks.Cells(rcd, 3) ' .Update ' End With 'Next With wks With .Range("A1").CurrentRegion 'エクセルシート全データ範囲(2次元配列) Let mtr = .Resize(.Rows.Count - 1).Offset(1, 0).Value For rcd = LBound(mtr, 1) To UBound(mtr, 1) '1次行 Nrcs.AddNew 'LB:最小値(1) UB:最大値(5) For fld = LBound(mtr, 2) To UBound(mtr, 2) '2次列 'アクセスに行列でデータを書き込む Let Nrcs.Fields(fld - 1).Value = mtr(rcd, fld) Next Nrcs.Update 'データを保存する Next End With End With Nrcs.Close Ndbs.Close Set Ndbs = Nothing Set Nrcd = Nothing Set Nfld = Nothing Set Ntbl = Nothing End Sub DAO その2 へ戻る.                            back top