Option Compare Database
Option Explicit
Public Sub ArrayToTable(ArrayToExport As Variant, Dimensions As Integer, TableN As String, Optional FirstDLB As Control, Optional SecondDLB As Control)
Dim db As DAO.Database
Dim td As DAO.TableDef
Dim rs As DAO.Recordset
Dim i As Integer
Dim j As Integer
Set db = CurrentDb()
Set td = db.TableDefs!TableN
Set rs = td.OpenRecordset
If Dimensions = 1 Then
j = UBound(ArrayToExport) - LBound(ArrayToExport) + 1
Do Until i >= j
rs.AddNew
rs!Column1 = ArrayToExport(i)
rs.Update
i = i + 1
Loop
Else
If Dimensions = 2 Then
Dim k As Integer
For i = FirstDLB To UBound(ArrayToExport, 1)
With rs
.AddNew
For j = SecondDLB To UBound(ArrayToExport, 2)
.Fields(k) = ArrayToExport(i, j)
k = k + 1
Next
.Update
k = 0
End With
Next
End If
End If
rs.Close
If IsObject(rs) Then Set rs = Nothing
If IsObject(td) Then Set td = Nothing
If IsObject(db) Then Set db = Nothing
End Sub
Public Function TableToArray(ArrayName() As Variant, ColumnT As String, SourceT As String)
Dim rs As DAO.Recordset
Dim intArraySize As Integer
Dim iCounter As Integer
Dim st, cs As String
Set rs = CurrentDb.OpenRecordset(SourceT)
If Not rs.EOF Then
rs.MoveLast
rs.MoveFirst
intArraySize = rs.RecordCount
iCounter = 0
ReDim ArrayName(intArraySize)
Do Until rs.EOF
ArrayName(iCounter) = Nz(rs.Fields(ColumnT), 0)
'myArray(iCounter) = rs.Fields(Column) <-- Original statement
'However it creates an error if some records are empty in the field of the table
iCounter = iCounter + 1
rs.MoveNext
Loop
End If
rs.Close
If IsObject(rs) Then Set rs = Nothing
End Function