Медленная запись макроса VBA в ячейках
У меня есть макрос VBA, который записывает данные в очищенную рабочую таблицу, но это очень медленно!
Я создаю экземпляр Excel из 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
Моя проблема в том, что цикл foreach довольно большой. В конце я получу около 29000 строк. Это займет более 25 минут, чтобы сделать это на довольно хорошем компьютере.
Есть ли какие-нибудь приемы, чтобы ускорить запись в ячейки? Я сделал следующее:
xlApp.ScreenUpdating = False
xlApp.Calculation = xlCalculationManual
Я неправильно ссылаюсь на клетки? Можно ли написать целую строку вместо отдельных ячеек?
Это будет быстрее?
Я протестировал свой код, цикл foreach проходит довольно быстро (я записал значения в несколько случайных величин), поэтому я знаю, что запись в ячейки - это то, что занимает все это время.
Если вам нужна дополнительная информация, фрагменты кода, пожалуйста, дайте мне знать.
Спасибо за ваше время.