Cómo escribir una colección VBA en una hoja de Excel [duplicar]

Esta pregunta ya tiene una respuesta aquí:

Copie los valores de una colección a una matriz 2D en VBA 1 respuesta

Tengo algún código existente que estoy modificando. Este código crea una colección de filas de tablas de hojas de trabajo preexistentes. Crea una gran colección 2-D, con información distinta en cada columna. Hay un módulo de clase separado que declara el tipo de datos para cada columna.

El código escribe la colección 2-D en una nueva hoja haciendo un bucle a través de cada elemento por turno. Nunca he usado una colección antes, y me gustaría escribir la colección en la hoja en una sola pasada. El código actual toma bastante tiempo cuando la tabla tiene muchos registros.

¿Hay alguna forma de convertir toda la colección en una matriz 2-D, o para que pueda escribir la matriz 2-D de una sola vez? ¿O hay una manera de escribir la colección completa en la hoja, al igual que con una matriz 2-D? He intentado buscar esto y hasta ahora no he tenido éxito. Cualquier punto general sería apreciado!

Aquí hay un código de ejemplo, con comentarios en negrita, para ilustrar cómo se está utilizando la colección.

Definir el módulo de clase, nombrado como TableEntry

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

Rutina principal: cree la colección, complete la colección, escriba la colección en la hoja

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)

Rutina secundaria 1 - Llene la colección

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

Rutina secundaria 2 - Escribir colección a hoja

Respuestas a la pregunta(2)

Su respuesta a la pregunta