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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д