Удаление любых файлов из кода VBA Excel с помощью оператора Kill и метода DeleteFile объекта FileSystemObject. Знаки подстановки, синтаксис, примеры.
Оператор Kill
Описание
Синтаксис
1 |
Kill PathName |
- PathName – это строковое выражение, задающее одно или несколько имен файлов (по шаблону), которые требуется удалить.
Строка PathName может содержать каталоги (папки) и букву диска. Если файл с именем PathName не существует, будет сгенерирована ошибка.
Оператор Kill поддерживает использование знаков подстановки в последнем компоненте параметра PathName (собственное имя файла без пути к нему):
- Звездочка (*) – заменяет любое количество символов или ни одного.
- Вопросительный знак (?) – заменяет один символ или ни одного.
Знаки подстановки позволяют создать шаблон, по которому можно удалить сразу несколько файлов.
Примеры
Пример 1
Удаление одного файла без проверки его существования (в примере — удаление книги Excel):
1 2 3 4 |
Sub Primer1() On Error Resume Next Kill ThisWorkbook.Path & "\Книга1.xlsx" End Sub |
Инструкция On Error Resume Next нужна для того, чтобы корректно завершить программу в том случае, если файла с именем PathName не существует.
Пример 2
Удаление одного файла с проверкой его существования:
1 2 3 4 5 |
Sub Primer2() Dim myPathName As String myPathName = "C:\Новая папка\Файл1.docx" If Dir(myPathName) <> "" Then Kill myPathName End Sub |
Пример 3
Удаление нескольких файлов по шаблону:
1 2 3 4 |
Sub Primer3() On Error Resume Next Kill "C:\Новая папка\Справка*" End Sub |
В результате работы этого кода VBA Excel будут удалены все файлы с любыми расширениями, которые начинаются со слова «Справка». Если строку Kill "C:\Новая папка\Справка*"
заменить строкой Kill "C:\Новая папка\*2020*"
, она удалит все файлы, в имени которых есть подстрока «2020».
Как удалить объект ThisWorkbook с помощью оператора Kill из кода VBA Excel, размещенного в нем же, смотрите в статье: Удаление книги из собственного кода.
Метод DeleteFile
Описание
Синтаксис
1 |
Object.DeleteFile PathName, [force] |
- Object – переменная, возвращающая объект FileSystemObject (обязательный параметр);
- PathName – строковое выражение, задающее одно или несколько имен файлов (по шаблону), которые требуется удалить (обязательный параметр);
- force – значение типа Boolean: True – удаляются все файлы, False (по умолчанию) – не удаляются файлы с атрибутом «только для чтения» (необязательный параметр).
В последнем компоненте параметра PathName (собственное имя файла без пути к нему) можно использовать знаки подстановки, также, как и для оператора Kill. Если указанный файл не существует, будет сгенерирована ошибка.
Примеры
Пример 4
Удаление одного файла с проверкой его существования:
1 2 3 4 5 6 7 8 9 10 |
Sub Primer4() Dim fso As Object 'Присваиваем переменной fso ссылку на новый экземпляр FileSystemObject Set fso = CreateObject("Scripting.FileSystemObject") 'Проверяем существование удаляемого файла If Dir(ThisWorkbook.Path & "\Изображение.png") <> "" Then 'Удаляем файл, если он существует fso.DeleteFile ThisWorkbook.Path & "\Изображение.png" End If End Sub |
Пример 5
Удаление нескольких или всех файлов по шаблону:
1 2 3 4 5 6 7 8 9 |
Sub Primer5() Dim fso As Object 'Присваиваем переменной fso ссылку на новый экземпляр FileSystemObject Set fso = CreateObject("Scripting.FileSystemObject") 'Завершаем программу, если не существует ни одного файла, подходящего под указанный шаблон On Error Resume Next 'Удаляем указанный файл (файлы) fso.DeleteFile "C:\Новая папка\*.docx" End Sub |
В результате работы этого кода VBA Excel из папки «Новая папка» будут удалены все файлы с расширением .docx
.
Фразы для контекстного поиска: удаление файла, удаление всех файлов, удаление нескольких книг, удаление всех книг, удаление по шаблону.