ExcelのデータをAccessのテーブルへインポートできない
Access VBA超初心者です。
Excelのデータの任意の列のデータをAccessの既存テーブルの任意のフィールドへインポートしたいのですが
既存Excelシートの構成は例のようにデータベース形式でないため試行錯誤しています。
Excelシートの構成は1~2行は空行、3行目と4行目にフィールド名がはいっており
セルの結合は使われていません。
データは5行目から開始されています。
<例>
列番号 |A列|B列|C列|D列|E列|
3行目 | 季節 | |
4行目 | 春 |夏 |秋 |冬 | |
5行目 |aa |bb |100 |200 |300 |
まず、以下の手順1と手順2を考えました。
----------------------------------------------------
◇目的
上記<例>のE列のデータを既存Accessテーブルにインポートしたい。
◇Accessの事前準備
フィールド名だけ指定し、レコードは空の状態の[a]テーブルを作成しました。
◆手順1
AccessからExcelをオブジェクトとして開き、[a]テーブルへ列単位でコピーする()
◆手順2
[a]テーブルから条件にあうレコードを別テーブル[b]のフィールドへインポートする
(SQL文)
----------------------------------------------------
まず、手順1のコードをネット検索を参考にして以下のようにしました。
最後に「入力しました」とメッセージが表示されるもののaテーブルにデータがインポートされません。
特にエラーメッセージも表示されません。
どなたか親切にアドバイス頂ける方がいらっしゃいましたらどうぞお願いします。m(__)m
----------------------------------------------------
Public Sub エクセルインポート()
Dim xlApp As Object, xlBook As Object, xlSheet As Object, Wcell As Object
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("¥Excelファイル保存場所パス\Excelファイル.xls")
Set xlSheet = xlBook.Worksheets("Excelシート名")
Set Wcell = xlSheet.Range("a1")
Dim intNo As Integer
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Set cn = CurrentProject.Connection
rs.Open "a", cn, adOpenKeyset, adLockOptimistic
xlApp.Application.Visible = True
intNo = 5
Do Until rs.EOF
rs!フィールド名1 = xlApp.Application.Cells(intNo, 1).Value
rs!フィールド名2 = xlApp.Application.Cells(intNo, 2).Value
rs!フィールド名3 = xlApp.Application.Cells(intNo, 3).Value
~
rs!フィールド名21 = xlApp.Application.Cells(intNo, 21).Value
Loop
xlBook.Close
xlApp.Visible = False
Set xlBook = Nothing
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
MsgBox "入力しました"
End Sub
----------------------------------------------------
お礼
回答ありがとうございます。 このページは見ていたのですが、Accessが古い2003のmdbで、accdbではないので、OLEDB.12.0などの記述が変わるのではと思ったことと、テーブルの最後のレコード番号を調べて+1のカウントアップでレコードNoをエクセル上で書き込んでから、mdbの指定テーブルに書き出したい希望がありましたので、追加のコードを知りたいと思い質問をしていました。