dポイントプレゼントキャンペーン実施中!

ExcelからACCESSにデータを追加したいのです。

Excelに下記のようなデータがあります。

ExcelのセルA1 xxx-xc
ExcelのセルB1 メーカーズマーク
ExcelのセルC1 バーボン
ExcelのセルD1 5000円

それで下記のコードをExcelに書きました。

Sub データ追加()
Dim con As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim conStr As String

conStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=ACCESSの絶対パス"
con.Open ConnectionString:=conStr
rs.Open Source:="M_商品", ActiveConnection:=con, _
CursorType:=adOpenKeyset, LockType:=adLockOptimistic

With rs
.AddNew
.Fields("商品コード").Value = Range("A1").Value
.Fields("商品名").Value = Range("B1").Value
.Fields("商品区分").Value = Range("C1").Value
.Fields("単価").Value = Range("D1").Value
.Update
End With

rs.Close
con.Close
End Sub

問題なく作動します。
でもこのコードだと1行しかACCESSへ転記できません。

Sub データ追加()
Dim con As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim conStr As String

conStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=ACCESSの絶対パス"
con.Open ConnectionString:=conStr
rs.Open Source:="M_商品", ActiveConnection:=con, _
CursorType:=adOpenKeyset, LockType:=adLockOptimistic

With rs
.AddNew

.Fields("商品コード").Value = Range("A1").Value
.Fields("商品コード").Value = Range("A2").Value
.Fields("商品名").Value = Range("B1").Value
.Fields("商品名").Value = Range("B2").Value
.Fields("商品区分").Value = Range("C1").Value
.Fields("商品区分").Value = Range("C2").Value
.Fields("単価").Value = Range("D1").Value
.Fields("単価").Value = Range("D2").Value

.Update
End With

rs.Close
con.Close
End Sub

このように記載すれば、2行転記できますが、
どのように記載すれば、簡単に、3行、4行と転記できるのでしょうか?

また転記するものは、日によって

10行のときもあれば、30行のときもあります。


本当は空白のセルまでに記載したものをACCESSへ転記したいのですが、
どのように記載したらいいのかご教授お願いします。

A 回答 (1件)

いろいろな書き方がありますが


分かりやすいのはこんな感じ。

Dim i As long

・・・
i = 1
With rs
Do Until Cells(i, 1) = ""
.AddNew
.Fields("商品コード").Value = Cells(i, 1)
.Fields("商品名").Value = Cells(i, 2)
.Fields("商品区分").Value = Cells(i, 3)
.Fields("単価").Value = Cells(i, 4)
.Update
i = i + 1
Loop
End With
・・・
    • good
    • 0
この回答へのお礼

ありがとうございます。できました。

もっと勉強したいと思います。

お礼日時:2015/04/15 15:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!