|
毎度お世話になっております。
ADOの勉強の為、Excelのシートデータをmdbにインポートする
プログラムを作成しました。(Access操作は初めてです。)
そこで質問なのですが、ADOの接続が確立された時点で、.mdbの中の複数存在
するテーブル名を取得する方法はあるのでしょうか?
(自分で調べたかぎりでは、操作したいテーブル名が分かっていてのADO接続
であり、自分のやり方が邪道のように感じています。)
作業の流れは
1 Excelフォーム上で.xlsファイルの指定(任意)
2 裏で一度そのファイルを開きすべてのシート名を取得、Comboboxにadditem
3 シートを選択
4 そのシートは何行目が見出し行なのかを指定
5 インポートされるmdbファイルを指定(任意)
6 対象となるテーブル名を指定
7 ADOで接続し、Recordsetよりそのテーブルにあるフィールド名すべてを
UserFormに表示して、接続を一旦終了する。
8 個々のフィールドにシートのどの列を対応させるのか設定
9 フィールドとシートの列のデータ型に矛盾がないかチェック
10 再度接続して、インポートスタート
です。現在6の作業は一度mdbファイルを開きテーブル名を確認して、直接TextBox
に手入力していますが、プログラムでテーブル名が取得できれば、現在Textboxの
所をComboBoxに変更してそこから選択できるようにしたいです。
Const cnsMDBConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
Sub Data_Inport()
Dim CN As ADODB.Connection
Dim Res As ADODB.Recordset
Dim strExlFileName As String
Dim strSheetName As String
Dim strMdbFileName As String
Dim strTable As String
'//////////////////////////////////////
'ファイル名取得やテーブル名取得は省略
'//////////////////////////////////////
Set CN = New ADODB.Connection
CN.Open cnsMDBConnect & strMdbFileName & ";"
'私の認識ではこれより先の操作では、必ずテーブル名が必要という認識です。
'connectionが確立したこの時点でテーブル名が取得できればと思っています。
'この時点でのconnectionのメンバを見渡した限りではそれらしい物は発見でき
'ませんでした。
Set Res = New ADODB.Recordset
Res.Open strTable, CN,adOpenKeyset, adLockOptimistic, adCmdTable
以下省略
環境はexcel2003,access2000,os xpです。よろしくお願いします。
|
|