access-vba-INSERT-INTO



目次

✅ 解決方法: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化

などもご案内できます。お気軽にどうぞ!

よかったらシェアしてね!
目次