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 respostaEu 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