Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2012, 13:44   #1
88ra
Пользователь
 
Регистрация: 09.09.2009
Сообщений: 24
По умолчанию Архивация большого количества файлов

Добрый день всем!
Описание: Архивация некого множества мелких документов(от 50 до 200 штук).
Проблемка: функция DoEvents, несмотря на ее качества, не помогает записать эту кучку файлов в архив, не успевает диск записывать, и происходит ошибка записи или обращения к архиву.
Решается задержкой в 1 секунду или меньше с помощью подбора значений в пустом цикле, но может есть более универсальное решение?

Кусок кода архивации:

Код:
For iCtr = LBound(FName, 2) To UBound(FName, 2)
            vArr = Split97(FName(Index, iCtr), "\")
            sFName = vArr(UBound(vArr))
            If sFName <> "" Then
             
            Else
                    
                        i = i + 1
                       
                        oApp.Namespace((FileNameZip)).CopyHere (FName(Index, iCtr))
                         Do Until oApp.Namespace((FileNameZip)).items.Count = i
                             DoEvents
                            
                            'If i = 50 Then Stop
                            Application.Wait (Now + TimeValue("0:00:01"))
                            'iii = 0
                            'For ii = 1 To 4000000
                            ' iii = iii + 1
                            ' Next ii
                        Loop
                        
              End If
        Next iCtr

Последний раз редактировалось 88ra; 22.09.2012 в 17:24.
88ra вне форума Ответить с цитированием
Старый 22.09.2012, 14:33   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Решение есть - использовать программу WinRAR для архивации
Работает куда более стабильно, нежели средства Windows (из собственного опыта), и никаких задержек ставить не надо.

Примеры кода есть на форуме (как-то выкладывал)
EducatedFool вне форума Ответить с цитированием
Старый 22.09.2012, 14:50   #3
88ra
Пользователь
 
Регистрация: 09.09.2009
Сообщений: 24
По умолчанию

Спасибо за совет, попробую! Хотелось бы конечно не контролировать установку WinRara на машинах пользователей, которые юзают этот макрос... ну придется)

Последний раз редактировалось 88ra; 22.09.2012 в 15:01.
88ra вне форума Ответить с цитированием
Старый 22.09.2012, 16:20   #4
88ra
Пользователь
 
Регистрация: 09.09.2009
Сообщений: 24
По умолчанию

Вариант с WinRar который нашел архивирует указанную папку


Код:
 FolderPath = "C:\" ' папка с файлами
   ArchieveFileName = Chr(34) & FolderPath & "Мой архив .exe" & Chr(34) ' имя и путь создаваемого архива
   Mask = Chr(34) & FolderPath & "*.xls" & Chr(34) ' добавляем только файлы Excel


    CommandLine = WinRAR_Path & WinRAR_Keys & ArchieveFileName & " " & Mask
А можно, чтоб пути файлов конкретных по одному добавлять?

Последний раз редактировалось 88ra; 22.09.2012 в 17:23.
88ra вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление большого количества картинок в примечания Олег83 Microsoft Office Excel 0 30.01.2012 15:43
Создание большого количества потоков Crystallon Общие вопросы Delphi 3 03.06.2011 02:42
Как свести информацию из большого количества файлов в один Rahmeev Microsoft Office Excel 3 21.05.2010 07:11
Проблема большого количества форм... Mr.Qwerty Общие вопросы Delphi 2 16.07.2009 16:53
непрерывная смена большого количества фотографий brenfire Помощь студентам 5 08.08.2008 11:23