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
よりシンプルな構文にしたいと思います。
お手数おかけいたしますが、わかる方いらっしゃいましたら
教えて下さい。
No.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
No.1
- 回答日時:
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
テストはしていませんが、これでできるかと思います。
お試し下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- 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を早くしたい 5 2022/09/09 10:58
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) 3個のfileのセルデータを1個のfileのセルに貼り付けるVBAコードですが。 1 2023/02/20 09:21
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) VBAで実行時エラー'424' オブジェクトが必要ですと出る 2 2022/10/07 09:25
- Visual Basic(VBA) VBAでのループ順序について 3 2023/03/13 10:55
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
access count数を変数に格納
-
「更新に必要なキー列の情報が...
-
access2000でつまづいてます
-
ADOでループすると1レコードず...
-
Access2003でのテーブルの有無確認
-
Accessの更新前処理について。D...
-
Excel 2019 のピボットテーブル...
-
「直需」の意味を教えてください
-
Oracle 2つのDate型の値の差を...
-
エクセルVBAで5行目からオート...
-
Accessでテーブルの値をテキス...
-
ACCESSで400以上のフィールドが...
-
Accessで数値型にNULLをInsert...
-
Accessのフィールド数が255しか...
-
Access テキスト型に対する指定...
-
ORACLEでLONG項目からCHAR項目...
-
ACCESSで和暦を西暦に・・・
-
他テーブルで一致する列から名...
-
Access IF文でテーブルに存在し...
-
作番ってどういう意味でしょうか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
access count数を変数に格納
-
access2000でつまづいてます
-
ACCESSのFindコマンドが遅い
-
Accessの更新前処理について。D...
-
「更新に必要なキー列の情報が...
-
[Access]削除時のエラーメッセ...
-
Access VBAで自動連番を振るには
-
ADOでループすると1レコードず...
-
ACCESS 処理件数の取得
-
AceessVBA 非同期処理について
-
VBScript+SQLServerでcountがう...
-
Access VBA
-
AccessVBAについて
-
半角スペースの置換でエラーを...
-
cobolのカーソルについて
-
access vbaでクエリデータの中...
-
レコードのロックについて
-
Access2003でのテーブルの有無確認
-
linuxについて質問です
-
エクセルVBAで5行目からオート...
おすすめ情報