I do not fully understand what you are doing, but do you know about Redim?

Redim allows you to change the dimensions of an array. It has an option which allows making an array larger without losing data already in the array.

Perhaps you could work with an array that you Redim as required, and an array into which you read new data. Read more data into second array, Redim the other array, copy data from second to first. Repeat as often as required.

I copied the following from my MSDN Library documentation.

To create a dynamic array

Declare the array with a Public statement (if you want the array to be public) or Dim statement at the module level (if you want the array to be module level), or a Static or Dim statement in a procedure (if you want the array to be local). You declare the array as dynamic by giving it an empty dimension list.
Dim DynArray()

Allocate the actual number of elements with a ReDim statement.
ReDim DynArray(X + 1)

The ReDim statement can appear only in a procedure. Unlike the Dim and Static statements, ReDim is an executable statement — it makes the application carry out an action at run time.

ReDim [Preserve] varname(subscripts)

Redim uses sames syntax as Dim. It has a "Preserve" option if array contains data when Redim is executed.

Hope the above helps.