プロが教える店舗&オフィスのセキュリティ対策術

EXCELのVBAを使って、SQLサーバーに接続し、
データテーブルを開き、データを200個(xが100個、yが100個)
書き込みさせたいプログラムを作っています。
強引に1つ1つ書き込みし、200個登録は出来たのですが、
もっとプログラムを簡略化したいと思います。
以下に内容をしめします。


-------------------------------------------
'SQLデータベースに接続

Set rs = CreateObject("ADODB.RecordSet")
Set CN = CreateObject("ADODB.Connection")

CN.ConnectionString = "Driver={SQL Server};" & _
"server=○○○.○○.○○.○○; database=DB ; uid=ID; pwd=1234;"

CN.Open

'-----[Dataテーブル] -----
Set rs = New Recordset
rs.Open "Data", CN, adOpenKeyset, adLockOptimistic

'[Dataテーブル]に書込み
rs.AddNew
Worksheets("Sheet1").Select

'☆☆☆

rs!x1 = Cells(10, 5).Value
rs!x2 = Cells(11, 5).Value
rs!x3 = Cells(12, 5).Value
rs!x4 = Cells(13, 5).Value
   ・
   ・ 
   ・
   ・
rs!x100 = Cells(109, 5).Value

rs!y1 = Cells(10, 7).Value
rs!y2 = Cells(11, 7).Value
rs!y3 = Cells(12, 7).Value
rs!y4 = Cells(13, 7).Value
   ・
   ・ 
   ・
   ・
rs!y100 = Cells(109, 7).Value

'☆☆☆


'保存
rs.Update
MsgBox "追加しました"

'後処理
rs.Close: Set rs = Nothing
CN.Close: Set CN = Nothing

'終了処理
Set rs = Nothing
Set CN = Nothing

-------------------------------------------



'☆☆☆で挟まれた部分を繰り返し文で簡潔にプログラミングしたいです。


自分が考えた以下の分では、エラーが出てしまいました。
  i = 1
  n = 10
Do While i < 100
   rs!x"& i &" = Cells(n, 5)
   rs!y"& i &" = Cells(n, 7)
  i = i + 1
  n = n + 1
Loop


よりシンプルな構文にしたいと思います。

お手数おかけいたしますが、わかる方いらっしゃいましたら
教えて下さい。

A 回答 (2件)

cheesepizzaさん


NO.1で間違っていました。

下記のように変更して下さい。

For i = 1 To 100
 rs.Fields("x" & i) = Cells(i + 9, 5).Value
 rs.Fields("y" & i) = Cells(i + 9, 7).Value
Next i

この回答への補足

お世話になります。

教えていただきました内容で無事目的の内容を
進行することができました。

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

補足日時:2013/10/07 11:15
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
月曜日に社で試して見ます。

お礼日時:2013/10/05 07:46

cheesepizzaさん


こんにちは

修正部分だけ記述しています。

For i = 1 To 100
 rs.Fields(x & i) = Cells(i + 9, 5).Value
 rs.Fields(y & i) = Cells(i + 9, 7).Value
Next i

テストはしていませんが、これでできるかと思います。
お試し下さい。
    • good
    • 0

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