Move
to after the For Each Line
For Each item As Map In data
Dim row(5) As Object
Explanation:
Imagine that row() lives at memory address 4
you move the data with the ,get to each array member
you then .add rec to the list - but .add uses a reference so points to (memory) 4
you then in the loop .get new data for the array
you then .add to list
now because the first item in the list was told its data was at (memory) 4 - you have effectively overwritten it with the subsequent value.
that's why when you look at the list, all items have the same value as the last item you added.
By putting the dim inside the loop, you force rec() to get a new reference each time, so the data for each list item will be written with unique reference, and the data will correctly show in the the list.