目次
✅ 解決方法:Collectionを使う(Add可能)
Sub InsertWithCollection() Dim db As DAO.Database Dim sqlPrefix As String Dim sqlList As Collection Dim item As Variant Set db = CurrentDb() Set sqlList = New Collection sqlPrefix = "INSERT INTO ユーザー (ユーザー番号, ユーザーID, ユーザー名, パスワード, メール)" ' Addで要素を追加 sqlList.Add " VALUES (1001, 'user1', 'name1', 'pas001', 'mail01@gmail.com')" sqlList.Add " VALUES (1002, 'user2', 'name2', 'pas002', 'mail02@gmail.com')" sqlList.Add " VALUES (1003, 'user3', 'name3', 'pas003', 'mail03@gmail.com')" ' 実行 For Each item In sqlList db.Execute sqlPrefix & item, dbFailOnError Next MsgBox "CollectionからINSERT完了" End Sub
✅ 代替:動的配列を使う(ReDim Preserve)
Dim sqlList() As String Dim i As Integer ReDim sqlList(0) sqlList(0) = "VALUES (1001, ...)" ' 追加するたびに配列サイズを拡張 ReDim Preserve sqlList(1) sqlList(1) = "VALUES (1002, ...)"
※ 可読性や実用性では Collection
の方がおすすめです。
✅ まとめ
方法 | 特徴 |
---|---|
Array() | 固定長。あとから .Add は不可 |
Collection | .Add / For Each で柔軟運用 |
ArrayList | より高機能、参照設定が必要 |
ご希望があれば:
ArrayList
を使ったバージョン- ExcelやCSVから読み込んで
Collection
に詰める処理 - フォーム入力 → 配列に追加 → SQL生成 のUI化
などもご案内できます。お気軽にどうぞ!