2016年11月28日月曜日

DAOで全レコードの全フィールドデータを動的配列に格納するVBA

Access2013のDAOで、全レコードの全フィールドデータを動的配列に格納するVBAです。

下記フォームの[開始]ボタンをクリックすると実行します。

クリックイベント内に入力した、VBAコードです。

■VBAコードの流れ


1)レコードセットと配列を宣言
2)テーブルをレコードセットで開きます。
3)動的配列にフィールド数分の要素を確保します。
4)レコード数分、Doループで繰り返します。
5)フィールド数文、Forループで繰り返します。
6)配列にフィールドデータを格納します。
7)次のレコードに移動し、LoopでDoへ戻ります。
8)レコードセットの変数を開放します。

■VBAコード


Option Compare Database
Private Sub コマンド0_Click()
    Dim rs As Recordset
    Dim myArray() As Variant
   
    Set rs = CurrentDb.OpenRecordset("T_テーブル")
    ReDim myArray(rs.Fields.Count)
   
    Do Until rs.EOF
        For i = 0 To rs.Fields.Count - 1
            myArray(i) = rs(i)
        Next
        rs.MoveNext
    Loop
    Set rs = Nothing
End Sub

関連する記事
VBAでフォームを開くコードとエラー発生時の対処方法
VBAでフォームを閉じるボタンを作成する