Страницы: Пред. 1 2
RSS
Опять progress bar
 
{quote}{login=KL}{date=03.01.2012 10:37}{thema=Re: Re: }{post}{quote}  
(и, не в обиду будь сказано, я сильно сомневаюсь в том, что вы сами смогли бы написать такой).{/post}{/quote}  
Спасибо за комплимент :)  
ps. с помощью книги Уокенбаха и Вашими (форумчане) советами - невозможное становится возможным ;)
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
:) Ну значит какая-то польза от нашего занудства все же есть. Если что - обращайтесь.
KL
 
LightZ, я вообще ничего не понял с вашим пустым файлом с 8 макросами )  
 
Мы вам дали кучу примеров кода, я думаю вы сами разберётесь )
 
Ещё бы Правила прочитать (размер файлов)...
 
{quote}{login=}{date=03.01.2012 11:17}{thema=}{post}LightZ, я вообще ничего не понял с вашим пустым файлом с 8 макросами )  
 
Мы вам дали кучу примеров кода, я думаю вы сами разберётесь ){/post}{/quote}  
спасибо за советы, жаль, что с ПБ ничего не вышло...
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
{quote}{login=KL}{date=03.01.2012 10:37}{thema=Re: Re: }{post}{quote}{login=LightZ}{date=03.01.2012 10:25}{thema=Re: }{post}{quote}{login=}{date=03.01.2012 10:21}{thema=}{post}{/post}{/quote}  
К коду опубликованному вами 03.01.2012, 20:32 уже можно прикрутить ПБ {/post}{/quote}  
подскажете как?
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
{quote}{login=LightZ}{date=03.01.2012 11:39}{thema=Re: }{post}{quote}{login=}{date=03.01.2012 11:17}{thema=}{post}LightZ, я вообще ничего не понял с вашим пустым файлом с 8 макросами )  
 
Мы вам дали кучу примеров кода, я думаю вы сами разберётесь ){/post}{/quote}  
спасибо за советы, жаль, что с ПБ ничего не вышло...{/post}{/quote}  
В вашем коде я не увидел никакого ПБ (я даже не знаю, какое из многочисленных решений вы хотите прикрутить к вашему коду). Покажите код, где не получается, и я поправлю, даже если это абсурд с прикручивание ПБ к полусекундному коду из 5 операций.
KL
 
LightZ, а вы вообще пробовали поискать готовое решение?  
Эта тема сотни раз поднималась на форумах, и у меня на сайте есть примеры сбора данных из файлов с прогресс-баром:  
http://excelvba.ru/programmes/Consolidation  
 
 
 
> даже если это абсурд с прикручивание ПБ к полусекундному коду из 5 операций.  
 
Кирилл, мы с вами, видимо, живём на разных планетах (или у вас дома стоит суперкомпьютер),  
раз ваш Excel работает в десятки раз быстрее    
(если у вас, как вы сказали ранее, массив 1M*16K ячеек копируется за секунду)  
 
У меня комп неслабый (точнее, средний) по российским меркам: 2 ядра, 2 гига, Excel 2003-2007-2010, WinXP 32 бит)  
Конфигурация вашего компа и ПО мне известна (видел на другом форуме - последние версии Office и Windows, и т.п.)  
 
Но сколько я не пишу макросы, я НИ РАЗУ не видел, чтобы такой огромный массив записывался на лист моментально.  
Вот сейчас даже проверить не могу - Excel 2007 говорит, что ему памяти не хватает (пытался записать единицу во все ячейки листа через Ctrl+Enter)  
Но точно помню, что секунда - это для массива примерно 50K строк    
Массивы 100K*100 - это уже до нескольких секунд порой доходит  
(никаких формул, никаких событий точно нет)  
 
Так что для наших компов прогресс-бар - это не абсурд, это вынужденная необходимость.
 
Игорь,  
 
1. Согласен, что преувеличил  
2. Спецификации компа не обновлял несколько лет и сменил несколько штук с тех пор (сейчас QuadCore с 8Gb RAM)  
3. Речь идет не о заполнении ячеек значениями, что медленнее, а о Sheets(1).Cells.Copy: Sheets(2).Cells PasteSpecial xlValue  
4. На том компе, который вы знаете копирование 100х1000000 заняло 9 сек  
5. Думаю, что в реальной ситуации ОП при правильном написании макроса речь все же будет идти о секунде, так как 100х1000000 - нереально много.
KL
 
{quote}{login=EducatedFool}{date=04.01.2012 12:47}{thema=}{post}LightZ, а вы вообще пробовали поискать готовое решение?  
Эта тема сотни раз поднималась на форумах, и у меня на сайте есть примеры {/post}{/quote}  
Пробовал, но, ничего не нашел, или нашел но не смог применить...  
Код ниже, подскажите, как подставить к нему ПБ?  
 
Sub OpenF()  
Dim a As String, b As String, f As String, s As Workbook  
   Application.ScreenUpdating = False  
   Application.DisplayAlerts = False  
   Application.EnableEvents = False  
   Application.Calculation = xlCalculationManual  
путькпапке = GetFolderPath("Выбирите путь к файлу", ThisWorkbook.Path)  
Range("A" & Rows.Count).End(xlUp).Offset(1) = путькпапке  
If путькпапке = "" Then Exit Sub  
   Application.EnableEvents = True  
   Application.ScreenUpdating = True  
   Application.DisplayAlerts = True  
   Application.Calculation = xlCalculationAutomatic  
End Sub  
 
Sub copy()  
Dim i As Integer, iFileName As String  
For i = 2 To 100  
iFileName = Range("B" & i)  
'оптимизируем копирование  
With Application  
   .ScreenUpdating = False  
   .Calculation = xlCalculationManual  
   .EnableEvents = False  
End With  
'открываем файлы бд  
On Error Resume Next  
Workbooks.Open Filename:=iFileName, Password:=325327  
Call Module1.CopyNEW  
Next i  
With Application  
   .ScreenUpdating = True  
   .Calculation = xlCalculationAutomatic  
   .EnableEvents = True  
End With  
MsgBox "Копирование завершено", , ""  
End Sub  
 
Sub CopyNEW()  
With Application  
   .ScreenUpdating = False  
   .Calculation = xlCalculationManual  
   .EnableEvents = False  
Columns("L:IV").EntireColumn.Hidden = True  
Range("A2").Select  
Selection.AutoFilter  
ActiveSheet.Range("A2:K20000").AutoFilter Field:=10, Criteria1:="=0", _  
       Operator:=xlAnd  
Sheets(1).UsedRange.SpecialCells(xlCellTypeVisible).copy  
Windows("Сводная ЕМ.xlsm").Activate  
Sheets(2).Select  
Range("A" & Rows.Count).End(xlUp).Offset(1).Select  
Selection.PasteSpecial xlPasteValues, , , False  
Application.CutCopyMode = False  
Windows("BD.xls").Activate  
Selection.AutoFilter  
Columns("L:IV").EntireColumn.Hidden = False  
Windows("Сводная ЕМ.xlsm").Activate  
Sheets(1).Select  
'закрытие остальных книг  
For Each s In Workbooks  
If Not s Is ActiveWorkbook And Windows(s.name).Visible Then s.Close -1  
Next s  
   .ScreenUpdating = True  
   .Calculation = xlCalculationAutomatic  
   .EnableEvents = True  
End With  
End Sub
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
Страницы: Пред. 1 2
Читают тему
Наверх
Loading...