VB & Excel работа
Формулировка задачи:
Написал программу, которая открывает Эксель и проблема,я начинаю построчно обрабатывать Эксель, для подсчета данных.
Как ускорить работу обработки, сам Эксель скрыт, но обработка 500к строк занимает долго, хотя тоже самое при работе в VBA занимает минут 10.
Не могу понять в чем проблема, когда объект Эксель скрыт минут 30, когда VBA минут 10, в чем прикол?
Как ускорить работу обработки, сам Эксель скрыт, но обработка 500к строк занимает долго, хотя тоже самое при работе в VBA занимает минут 10.
Не могу понять в чем проблема, когда объект Эксель скрыт минут 30, когда VBA минут 10, в чем прикол?
Решение задачи: «VB & Excel работа»
textual
Листинг программы
Dim EX, FileName, i, j, SourceWS, NewWB, NewName, Step, StartRow
Step = 3
StartRow = 2
Set EX = CreateObject("Excel.Application")
FileName = EX.GetOpenFilename("Файлы Excel, *.xl*")
If FileName <> False Then
EX.ScreenUpdating = False
Set SourceWS = EX.Workbooks.Open(FileName).Worksheets(1)
Set NewWB = EX.Workbooks.Add
i = StartRow
j = 2
With NewWB.Worksheets(1)
.Range("A1:S1") = Array("К", "Метро", "адрес", "ОтМ", "Дом", "Площадь", "Б", "Т", "С", "П", "И", _
"Цена,р", "Цена,$", "Цена,e", "$/кв.", "Дата", "СМИ", "Телефоны", "Примечание")
While SourceWS.Cells(i, 1) <> ""
.Cells(j, 1).Value = SourceWS.Cells(i, 1).Value
.Cells(j, 2).Value = SourceWS.Cells(i, 2).Value
.Cells(j, 3).Value = SourceWS.Cells(i + 1, 2).Value
.Cells(j, 4).Value = SourceWS.Cells(i, 3).Value
.Cells(j, 5).Value = SourceWS.Cells(i, 4).Value
.Cells(j, 6).Value = SourceWS.Cells(i, 5).Value
.Cells(j, 7).Value = SourceWS.Cells(i, 6).Value
.Cells(j, 8).Value = SourceWS.Cells(i, 7).Value
.Cells(j, 9).Value = SourceWS.Cells(i, 8).Value
.Cells(j, 10).Value = SourceWS.Cells(i, 9).Value
.Cells(j, 11).Value = SourceWS.Cells(i, 10).Value
.Cells(j, 12).Value = SourceWS.Cells(i, 11).Value
.Cells(j, 13).Value = SourceWS.Cells(i + 1, 11).Value
.Cells(j, 14).Value = SourceWS.Cells(i + 2, 11).Value
.Cells(j, 15).Value = SourceWS.Cells(i, 12).Value
.Cells(j, 16).Value = SourceWS.Cells(i, 13).Value
.Cells(j, 17).Value = SourceWS.Cells(i + 1, 13).Value
.Cells(j, 18).Value = SourceWS.Cells(i, 14).Value
.Cells(j, 19).Value = SourceWS.Cells(i, 15).Value
i = i + Step
j = j + 1
Wend
.Columns("A:R").EntireColumn.AutoFit
End With
NewName = Left(FileName, InStrRev(FileName, ".") - 1) + "_chiv"
NewWB.SaveAs NewName
MsgBox "Создан файл: '" + NewName + "'"
End If
EX.Quit
Set EX = Nothing