Lectura de macro VBA lenta en celdas
Tengo una macro VBA, que escribe datos en una hoja de trabajo despejada, ¡pero es realmente lenta!
Estoy creando instancias de Excel de un profesional de proyectos.
Set xlApp = New Excel.Application
xlApp.ScreenUpdating = False
Dim NewBook As Excel.WorkBook
Dim ws As Excel.Worksheet
Set NewBook = xlApp.Workbooks.Add()
With NewBook
.Title = "SomeData"
Set ws = NewBook.Worksheets.Add()
ws.Name = "SomeData"
End With
xlApp.Calculation = xlCalculationManual 'I am setting this to manual here
RowNumber=2
Some random foreach cycle
ws.Cells(RowNumber, 1).Value = some value
ws.Cells(RowNumber, 2).Value = some value
ws.Cells(RowNumber, 3).Value = some value
...............
ws.Cells(RowNumber, 12).Value = some value
RowNumber=RowNumber+1
Next
Mi problema es que el ciclo foreach es un poco grande. Al final, obtendré alrededor de 29000 filas. Lleva más de 25 minutos hacer esto en una computadora bastante buena.
¿Hay algún truco para acelerar la escritura en las celdas? He hecho lo siguiente:
xlApp.ScreenUpdating = False
xlApp.Calculation = xlCalculationManual
¿Estoy haciendo referencia a las celdas de manera incorrecta? ¿Sería posible escribir en una fila completa, en lugar de las celdas individuales?
¿Sería eso más rápido?
He probado mi código, el ciclo foreach pasa bastante rápido (escribí los valores en algunas variables aleatorias), así que sé que escribir en las celdas es lo que ocupa todo este tiempo.
Si necesita más información, fragmentos de código, hágamelo saber.
Gracias por tu tiempo.