I have a VBA macro that writes data to a cleaned worksheet, but it is very slow!
I am creating Excel from Project Professional.
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
My problem is that the foreach loop is very large. In the end, I will take 29,000 rows. It takes more than 25 minutes to do this on a pretty good computer.
Are there any tricks to speed up writing to cells? I have done the following:
xlApp.ScreenUpdating = False
xlApp.Calculation = xlCalculationManual
Am I referencing cells incorrectly? Is it possible to write an entire row, rather than individual cells?
Will it be faster?
I tested my code, the foreach loop runs pretty fast (I wrote values to some random variables), so I know that writing to cells is something that takes all this time.
If you need more information, code snippets, please let me know.
Thank you for your time.