Страницы: 1
RSS
Удаление файлов из Excel
 
Доброе время суток.
Хочу удалить временные файлы. Из первой папки удаляется свободно. Из второй не удаляется вообще. Файлы для работы не задействованы. Руками в это время удаляются без проблем. Никаких специальных аттрибутов у этих файлов нет.
Код
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


Спасибо
Изменено: syt navy - 18.11.2021 10:30:27
 
Благодаря оператору On Error Вы работаете "вслепую". Уберите эти операторы и вставьте их только в том фрагменте, где они нужны:
Код
On Error Resume Next
Kill sFiles
On Error GoTo 0
Аналогично во второй части макроса.

Оператор RmDir удаляет каталог, который функция Dir с заданными Вами параметрами не возвращает, и гарантировано дает ошибку.
В 17-й строке макроса нет смысла.
Изменено: sokol92 - 18.11.2021 13:37:58
Владимир
 
Про 17 строку знаю. Осталось просто.
Оператор On Error перенес в обеих частях
Так же нет удаления. Возможно, проблема в том, что в папке backups лежат сжатые zip-папки?  
 
Вам функция Dir возвращает только файлы, не папки. Почитайте описание второго параметра.
Кроме того, имейте в виду, что оператор RmDir удаляет исключительно пустые папки. Папки целиком лучше очищать другими методами - воспользуйтесь поиском.
Изменено: sokol92 - 18.11.2021 15:25:42
Владимир
 
 "сжатая 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
Изменено: syt navy - 19.11.2021 08:19:28
Страницы: 1
Наверх