VBAでAccessデータベースに大量のダミーデータを追加する方法

こんにちは!大阪市を拠点に活動している『縁紡ぐ』の稲垣です。

SWELLを使ったホームページ制作や、Excel、ACCESS、RPAなどのシステム開発を行っています。
また、Excel、Word、Outlookの研修や、情報セキュリティ研修も行っています。身近なITの相談相手になりたいと思っています。

お気軽にお問い合わせください。

目次

VBAでAccessデータベースに大量のダミーデータを追加する方法

ExcelやACCESSでシステムを作成する時に必要になるのが、ダミーデータですね。速度に問題がないかを調べるときには、数万行から数万行といったレコードを必要とする場合があります。

この大量のダミーデータを作成するコードをご紹介します。

テーブルの情報

今回の追加するテーブル情報です。

テーブル:生徒マスタ
フィールド:生徒番号(短いテキスト)、生徒名(短いテキスト)

ACCESSでACCESSのダミーレコードを大量に追加する方法

以下が、VBAを使ったダミーデータ追加のコードです。

Sub AddMultipleRecords()
    Dim db As DAO.Database
    Dim i As Long

    ' 現在のデータベースを設定
    Set db = CurrentDb

    ' 複数のレコードを追加
    For i = 1 To 100
        Dim sql As String
        sql = "INSERT INTO 生徒マスタ (生徒番号, 生徒名) VALUES (" & (1000 + i) & ", '生徒" & i & "');"
        
        ' SQL文の実行
        Debug.Print sql ' SQL文をイミディエイトウィンドウで確認
        On Error GoTo ErrorHandler
        db.Execute sql, dbFailOnError
    Next i

    ' 後処理
    Set db = Nothing
    
    MsgBox "レコードの追加が完了しました。"
    Exit Sub

ErrorHandler:
    MsgBox "エラーが発生しました: " & Err.Description
    Set db = Nothing
End Sub

ExcelからACCESSのダミーレコードを大量に追加する方法

次は、ExcelからACCESSへ大量のダミーレコードを追加する場合です。

Sub AddMultipleRecordsToAccessADO()
    Dim conn As Object
    Dim sql As String
    Dim i As Long
    Dim accessDbPath As String

    ' Accessデータベースのパスを指定
    accessDbPath = "C:\path\to\your\database.accdb" ' データベースのパスを指定してください

    ' ADO接続の初期化
    Set conn = CreateObject("ADODB.Connection")
    
    ' 接続文字列の設定
    conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & accessDbPath & ";"
    
    ' 接続を開く
    On Error GoTo ErrorHandler
    conn.Open

    ' 複数のレコードを追加
    For i = 1 To 100 ' 追加するレコード数を指定
        sql = "INSERT INTO 生徒マスタ (生徒番号, 生徒名) VALUES (" & (1000 + i) & ", '生徒" & i & "');"
        
        ' SQL文の実行
        Debug.Print sql ' SQL文をイミディエイトウィンドウで確認
        conn.Execute sql
    Next i

    ' 後処理
    conn.Close
    Set conn = Nothing
    
    MsgBox "レコードの追加が完了しました。"
    Exit Sub

ErrorHandler:
    MsgBox "エラーが発生しました: " & Err.Description
    If Not conn Is Nothing Then conn.Close
    Set conn = Nothing
End Sub

実行結果

まとめ

ACCESSでは、INSERT文で複数レコードを一気にVALUEで指定して作成する方法はないようです。他のテーブルから取得して複数レコードをINSERTすることは可能でのようです。仕方ないですが、ちょっと不便差を感じます💦

記事を書いた人

稲垣

  • Excel、ACCESSでのシステム開発が得意
  • ITスキルを共有し実践的に学びながら成長する人を見るのが幸せ
  • 自家焙煎するほどのコーヒー好き
  • 使用言語 VBA、Python、Javascript、Java、HTML、CSS etc.
  • 保有資格 Kintoneアソシエイト、日商簿記検定2級、マンション管理士、管理業務主任者、情報セキュリティマネジメント、ExcelVBA etc.
  • 業務フロー図の作成や業務時間分析を通して、効率化ポイントを探る人
  • お客様にとって本当に良いことかを第一に考える人
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次