It seems a little convoluted... For example, you could simply select those records and the fields you are interested in displaying...
And rather than copying individual fields from the recordset into an array and the array to the worksheet, you can simply copy directly from the resulting recordset to the worksheet...
You could make it into it's own procedure where you pass the variables such as StartDate and EndDate
and you can then use the passed variables for the query parameters.
Very brief code ignoring all related functionality like opening connections, declaring vars etc...
Bookmarks