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
----------------------------------------------------
No.1ベストアンサー
- 回答日時:
rsに対して addnew とか update してますか?
この回答への補足
>rsに対して addnew とか update してますか?
あ、すみません。していませんでした。
どこに記述すればよいですか・・。
ご回答ありがとうございました。
アドバイスのように下記内容にしましたら一応「読み込む」ことはできました。
「少数を丸めたために、データが切り捨てられました.」という実行時エラーが出てきましたので、明日じっくり再検討します。
おかげさまで少し前に進むことができました。
本当にありがとうございました。m(__)m
その後の経過も明日以降またご報告させて頂きます。
-------------------
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
rs.AddNew
xlApp.Application.Visible = False
intNo = 5 'Excelデータの取得開始行番号
Do Until rs.EOF
rs.MoveFirst
rrs!フィールド名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
rs.Update
rs.MoveNext
intNo = intNo + 1
Loop
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
INSERT INTO ステートメントに...
-
Accessコンボボックスの値を別...
-
【Access】フォームで自動計算...
-
Accessで、固定アルファベット+...
-
access2007 フォームについて
-
ACCESSで和暦を西暦に・・・
-
ファイルメーカーでCountifの様...
-
不一致クエリでnullまで抽出さ...
-
Access:リンクテーブルマネー...
-
accessで順位の合計の順位の求め方
-
ファイルメーカー10でマップに...
-
アクセス エラーを数値「0」に...
-
アクセスからオラクルへテーブ...
-
ACCESS VBAにてCSV...
-
Access2000のことで困っています。
-
主キーはオートナンバー型のID...
-
Accessでテーブルの値をテキス...
-
accessで重複を防ぎたい
-
アクセス フィールド名変更と別...
-
通貨型で\\0の時、何も表示しな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでテーブルの値をテキス...
-
Accessのフィールド数が255しか...
-
ACCESSで400以上のフィールドが...
-
INSERT INTO ステートメントに...
-
【Access】フォームで自動計算...
-
IT用語について質問です。 以前...
-
アクセス エラーを数値「0」に...
-
SQLServer2005のSQL文での別名...
-
ACCESSでの改行コード
-
accessで重複を防ぎたい
-
ExcelのデータをコピーでACCESS...
-
accessのレポートで元になるテ...
-
ACCESSで和暦を西暦に・・・
-
Accessで、固定アルファベット+...
-
アクセス VBAで列の入れ替...
-
アクセス メモ型 255文字...
-
ACCESSでテーブルのフィールド...
-
Access 昇順・降順で並び替え...
-
ACCESS検索★ある文字を複数のフ...
-
アクセスでオートナンバーをリ...
おすすめ情報