Como gravar uma coleção VBA em uma planilha do Excel [duplicado]

Esta questão já tem uma resposta aqui:

Copie os valores de uma coleção para um array 2D no VBA 1 resposta

Eu tenho alguns códigos existentes que estou modificando. Esse código cria uma coleção de linhas de tabelas de planilha preexistentes. Cria uma grande coleção 2-D, com informações distintas em cada coluna. Existe um módulo de classe separado que declara o tipo de dados para cada coluna.

O código grava a coleção 2-D em uma nova folha, passando por cada item por vez. Eu nunca usei uma coleção antes e gostaria de gravar a coleção na planilha em uma única passagem. O código atual leva muito tempo quando a tabela tem muitos registros.

Existe uma maneira de converter toda a coleção em uma matriz 2-D, ou então eu posso escrever a matriz 2-D de uma só vez? Ou existe uma maneira de escrever toda a coleção para a planilha, assim como com uma matriz 2-D? Eu tentei procurar por isso e até agora não tive sucesso. Quaisquer pontos gerais seriam apreciados!

Aqui está um código de exemplo, com comentários em negrito, para ilustrar como a coleção está sendo usada.

Definir o módulo de classe, nomeado como TableEntry

Public Item1 As String
Public Item2 As String
Public Item3 As String
Public Item4 As Integer
Public Item5 As Integer

Rotina principal - criar a coleção, preencher a coleção, gravar a coleção em folha

Sub MainRoutine()

Dim table As Collection
Set table = New Collection

Call FillCollection(File As String, ByRef table As Collection)

Call WriteCollectionToSheet(ByRef table As Collection)

Sub rotina 1 - Preencha a coleção

Dim wb As Workbook
Set wb = Workbooks.Open(File)

Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets

Dim R As Range
Set R = ws.Range("A2")

  Dim e As TableEntry
  For i = 1 To 20

    Set e = New TableEntry

    e.Item1 = R.Offset(i + 1, 0).Offset(0, 0)
    e.Item2 = R.Offset(i + 1, 0).Offset(0, 1)
    e.Item3 = R.Offset(i + 1, 0).Offset(0, 2)
    e.Item4 = R.Offset(i + 1, 0).Offset(0, 3)
    e.Item5 = R.Offset(i + 1, 0).Offset(0, 4)

    table.Add e

  Next i

Next ws

Sub Rotina 2 - Escreve Coleção para Folha

questionAnswers(2)

yourAnswerToTheQuestion