目次
✅ 解決方法: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化
などもご案内できます。お気軽にどうぞ!
