Доброе время суток. Хочу удалить временные файлы. Из первой папки удаляется свободно. Из второй не удаляется вообще. Файлы для работы не задействованы. Руками в это время удаляются без проблем. Никаких специальных аттрибутов у этих файлов нет.
Код
Sub del_files()
Dim sFolder As String, sFiles As String
sFiles = Dir("C:\Users\*******\Documents\unpack\" & "*")
'цикл по всем файлам в папке
On Error Resume Next
Do While sFiles <> ""
If sFiles <> "lotout.txt" Then
'удаляем файл
Kill sFiles
'на всякий случай передаем управление системе,
'чтобы дождаться удаления
DoEvents
End If
'получаем имя следующего файла в папке
sFiles = Dir
Loop
sFiles = Dir()
sFiles = Dir("C:\Users\*******\Documents\Backups\" & "*")
On Error Resume Next
Do While sFiles <> ""
Kill sFiles
RmDir sFiles
DoEvents
sFiles = Dir
Loop
End Sub
Благодаря оператору On Error Вы работаете "вслепую". Уберите эти операторы и вставьте их только в том фрагменте, где они нужны:
Код
On Error Resume Next
Kill sFiles
On Error GoTo 0
Аналогично во второй части макроса.
Оператор RmDir удаляет каталог, который функция Dir с заданными Вами параметрами не возвращает, и гарантировано дает ошибку. В 17-й строке макроса нет смысла.
Про 17 строку знаю. Осталось просто. Оператор On Error перенес в обеих частях Так же нет удаления. Возможно, проблема в том, что в папке backups лежат сжатые zip-папки?
Вам функция Dir возвращает только файлы, не папки. Почитайте описание второго параметра. Кроме того, имейте в виду, что оператор RmDir удаляет исключительно пустые папки. Папки целиком лучше очищать другими методами - воспользуйтесь поиском.
"сжатая zip-папка" - это всё-таки zip-файл.У оператора Kill прописал путь. И всё стало удаляться
Код
Sub del_files()
Dim sFiles As String
sFiles = Dir("C:\Users\*******\Documents\unpack\" & "*")
Do While sFiles <> ""
If sFiles <> "lotout.txt" Then
On Error Resume Next
Kill ("C:\Users\*******\Documents\unpack\" & sFiles)
On Error GoTo 0
DoEvents
End If
sFiles = Dir
Loop
sFiles = Dir("C:\Users\*******\Documents\Backups\" & "*")
Do While sFiles <> ""
On Error Resume Next
Kill ("C:\Users\*******\Documents\Backups\" & sFiles)
On Error GoTo 0
DoEvents
sFiles = Dir
Loop
End Sub