Vba excel удалить файл
Обновлено: 20.11.2024
Макрос удаления файлов VBA помогает удалять файлы из папки с помощью VBA. Обычно при работе с файлами мы создаем или удаляем файлы с помощью VBA. Например, когда мы автоматизируем определенную задачу, мы создаем множество промежуточных файлов и, наконец, получаем один конечный результат. В конце мы очищаем или удаляем все промежуточные файлы с помощью VBA.
Иногда мы можем регулярно отслеживать Outlook и получать новую почту с необходимыми входными файлами. Мы сохраним эти файлы в определенной папке, чтобы обработать эти файлы и получить окончательный результат. И мы проверим, прежде чем сохранять входные файлы в папку, и удалим, если в каталоге уже есть какие-либо существующие файлы.
Решение(я):
Метод DeleteFile объекта FileSystemObject можно использовать для удаления файлов с помощью VBA. Ниже приведены примеры удаления определенного файла или файлов из определенного места.
Макрос удаления файлов VBA — примеры случаев:
Удалить определенный файл из папки
Ниже приведен пример удаления определенного файла из папки или каталога. Вы можете использовать метод DeleteFile объекта FileSystemObject для удаления определенного файла из папки.
Сначала он проверит, существует ли файл в исходном расположении или нет. Если он существует, он будет удален из каталога или будет отображаться сообщение.
Вывод:
Случай 1: если файл не существует в исходном расположении для удаления, появится следующее сообщение.
Вариант 2: если файл существует в исходном расположении, он удалит файл из исходного расположения. И он будет отображать следующее сообщение.
Мощные и многоцелевые шаблоны для управления проектами. Теперь легко управляйте своими проектами, задачами, встречами, презентациями, командами, клиентами, заинтересованными сторонами и временем. На этой странице описаны все удивительные новые функции и возможности наших премиальных шаблонов.
Шаблоны расширенного планирования проекта
120+ шаблонов для управления проектами
Excel | PowerPoint | Слово
УЛУЧШЕННЫЙ ШАБЛОН УПРАВЛЕНИЯ РЕСУРСАМИ
50+ основных шаблонов управления проектами
Excel | PowerPoint | Слово
Шаблоны управления портфелем проектов
Excel | Шаблоны PowerPoint
50+ шаблонов управления проектами в Excel
Поделитесь этой историей, выберите платформу!
Об авторе: Валли
Разработчик Excel VBA, имеющий около 8 лет опыта использования Excel и VBA для автоматизации повседневных задач, создания отчетов и подготовки информационных панелей. Валли делится полезными примерами VBA и советами, которые помогают нам автоматизировать повседневные задачи.
Похожие записи
VBA ActiveSheet — объект активного листа Excel
Цветовой индекс Excel VBA
Копировать диапазон Excel VBA на другой лист с форматированием
Показать или скрыть|Выгрузить форму пользователя
8 комментариев
Я пытаюсь удалить предыдущую версию файла, который создает моя программа vba, но когда код, который вы описываете на этой странице (я использую его точно так же, как и ваш, меняя только имя и расположение файла , конечно) я получаю сообщение об ошибке: «Ошибка времени выполнения '70': Отказано в доступе». Я должен кое-что уточнить: я использовал ваш код с другой программой, которую я написал в vba excel 2010, где я сохранял файл на рабочем столе, потому что это был временный файл, тогда он работал нормально, на этот раз я удаляю файл по определенному адресу, а не на рабочем столе, и тогда я получаю сообщение об ошибке, упомянутое ранее.
Заранее благодарим за помощь
Привет, Фермин,
Мы не можем удалить файлы с веб-серверов, используя этот метод.Если вы хотите удалить файл с общих дисков, убедитесь, что вы ввели правильный путь к серверу и у вас есть права на удаление.
Здравствуйте, что если я хочу удалить все файлы в папке старше 30 дней, как это возможно?
Возможна ли процедура/функция vba для закрытия любых текстовых файлов типа «.dat», если они открыты из заданного пути к каталогу.
У меня есть другая программа Excel, которая запускается на основе набора этих файлов данных в качестве входных файлов из входной папки.
Перед запуском программы Excel я хочу убедиться, что все мои текстовые файлы dat закрыты, если они открыты, например, в блокноте.
Нет необходимости сохранять эти файлы dat, если они открыты в блокноте перед программным закрытием.
Спасибо за информацию, это успех в моей работе… большое спасибо
Я создал макрос, который сканирует и удаляет определенный диск (например, диск D:\). Но мне нужно добавить еще один диск для макроса ниже (т.е. диск P:\). и мне нужно добавить IF CONDITION для проверки того, что диск P или D недоступен в системе, но мне нужно запустить макрос, и журнал должен быть сохранен. Пожалуйста, помогите мне
Ниже мой макрос для сканирования только одного диска
'Force the явное делекарирование переменных
Option Explicit
Установите ссылку на Microsoft Scripting Runtime с помощью
«Инструменты» > «Ссылки» в редакторе Visual Basic (Alt+F11)
‘Объявите переменные
Dim objFSO As Scripting.FileSystemObject
Dim objTopFolder As Scripting.Folder
Dim strTopFolderName As String
'Вставьте заголовки для столбцов с A по F
Range("A1").Value = "Имя файла"
Range("B1").Value = "File Size"
Диапазон («C1»). Значение = «Тип файла»
Диапазон («D1»). Значение = «Дата создания»
Диапазон («E1»). Значение = «Дата последнего обращения»
Диапазон («F1»). Значение = «Дата последнего изменения»
Диапазон («G1»). Значение = «Файл удален»
Диапазон («H1»). Значение = «Файл удален/ Время сканирования»
Диапазон («I1»). Значение = «Путь к файлу»
'Назначить верхнюю папку переменной
strTopFolderName = "D:\"
'Создайте экземпляр FileSystemObject
Set objFSO = CreateObject("Scripting.FileSystemObject")
'Получить верхнюю папку
Set objTopFolder = objFSO.GetFolder(strTopFolderName)
'Вызов процедуры RecursiveFolder
Call RecursiveFolder(objTopFolder, True)
‘Измените ширину столбцов для достижения наилучшего соответствия
Columns.AutoFit
Sub RecursiveFolder(objFolder As Scripting.Folder, _
IncludeSubFolders As Boolean)
‘Объявите переменные
Dim objFile As Scripting.File
Dim objSubFolder As Scripting.Folder
Dim NextRow As Long
'Найти следующую доступную строку
NextRow = Cells(Rows.Count, "A").End(xlUp).Row + 1
Обработчик перехода к ошибке
'Перебрать каждый файл в папке
Для каждого objFile In objFolder.Files
Cells(NextRow, “A”).Value = objFile.Name
Cells(NextRow, “B ").Value = objFile.Size
Cells(NextRow, "C").Value = objFile.Type
Cells(NextRow, "D").Value = objFile.DateCreated
Cells( СледующаяСтрока, “E”).Value = objFile.DateLastAccessed
Ячейки(NextRow, “F”).Value = objFile.DateLastModified
Cells(NextRow, “I”).Value = objFile.Path
'If (DateDiff("d", objFile.DateLastModified, Now) > 1) And objFile.Type «Файл базы данных» And Left(objFile.Name, 2) «~$» Then
If (DateDiff("d", objFile.DateLastModified, Now) > 7) And (objFile.Type = «Документ Microsoft Word» или _
objFile.Type = «Документ Microsoft Word 97 — 2003») И _
Left(objFile.Name, 2) «~$» Then
'Установить FileSys = Ничего
'Установить objFolder = Ничего
'Установить objSubFolder = Ничего
'Установить objFile = Ничего
Уничтожить (objFile.Path)
Ячейки (Следующая строка, «G»). Значение = «Да»
Ячейки (Следующая строка, «H»). Значение = Формат ( Теперь «гггг-дд-мм чч:нн»)
Еще
Ячейки (Следующая строка, «G»). Значение = «Нет»
Ячейки (Следующая строка, «Ч»). Значение = Формат(Теперь «гггг-дд-мм чч:нн»)
Конец, если
Следующая строка = Следующая строка + 1
Следующий объектный файл
'Прокручивать файлы в подпапках
Если IncludeSubFolders Then
Для каждой objSubFolder In objFolder.SubFolders
Call RecursiveFolder(objSubFolder, True)
Следующая objSubFolders
End Если
'В этом примере я копирую файл из папки "C:Temp" в папку "D:Job"
Sub sbCopyingAFile()
‘Объявить переменные
Dim FSO
Dim sFile As String
Dim sSFolder As String
Dim sDFolder As String
'Это ваше имя файла, который вы хотите скопировать
sFile = "Files_Deletion Macro.xlsm"
'Изменить в соответствии с путем к исходной папке
sSFolder = "D:\Desktop Scan and Deletion\"
Измените в соответствии с путем к папке назначения
sDFolder = "Z:\PMOS\DMS Control Room\Chethan\A5901\"
Иногда, когда мы работаем в VBA, мы создаем нежелательные файлы или у нас на компьютере появляются нежелательные файлы. Как нам избавиться от них? Мы можем просто пойти и удалить каждый файл вручную, найдя файл и щелкнув его правой кнопкой мыши, затем мы нажимаем кнопку «Удалить», чтобы удалить файл. Или мы можем нажать кнопку удаления на клавиатуре, чтобы удалить файл. Но как это сделать в VBA, мы узнаем в этой статье.
Итак, теперь мы поняли концепцию этой темы, что нам нужно удалить файл с помощью макросов VBA. В VBA у нас есть команда kill, которая используется для удаления файла из его местоположения. Когда мы просто удаляем файл, выполнив процесс поиска файла и щелкнув его правой кнопкой мыши, чтобы удалить, или даже нажав кнопку удаления, файл попадает в корзину. Но когда мы используем команду Kill в VBA для удаления файла, файл навсегда удаляется с компьютера. В корзину не попадает. Теперь давайте посмотрим на синтаксис, который мы будем использовать для удаления файла с помощью VBA. Это выглядит следующим образом:
Оценка, Hadoop, Excel, мобильные приложения, веб-разработка и многое другое.
Синтаксис удаления файла в Excel VBA
Всегда помните, что путь к файлу должен быть заключен в кавычки. Теперь, чтобы удалить файл в VBA, у нас должен быть его путь. Как нам получить путь к файлу? Нам нужно щелкнуть правой кнопкой мыши файл и щелкнуть свойства, которые дают нам различные параметры свойств файла, когда мы нажимаем на вкладку безопасности, которая является вторым номером на вкладках, мы можем найти путь под именем объекта. Взгляните на скриншот ниже для справки.
Путь, указанный после имени объекта, является аргументом, который нам нужно передать для функции killfile, чтобы удалить любой файл. Теперь давайте приступим к удалению файлов, рассмотрев несколько примеров ниже.
Прежде чем мы перейдем к примерам, обязательно убедитесь, что у нас включена вкладка разработчика, чтобы можно было использовать макросы. Это делается путем перехода в раздел файлов, а затем в раздел параметров. Мы найдем флажок, который должен быть установлен, чтобы включить вкладку разработчика. Теперь давайте перейдем к примерам. Например, у меня есть два файла с именами «образец 1» и «образец 2». Оба являются текстовыми файлами и находятся на рабочем столе. Взгляните на них ниже.
Как удалить файл с помощью VBA?
Давайте рассмотрим примеры удаления файла в Excel VBA.
Давайте сначала удалим файл примера 1 в этом примере. Оба примера будут иметь одну минуту разницы, которую я объясню в конце темы. Во-первых, нам нужно получить путь к файлу примера 1. Для этого щелкните правой кнопкой мыши файл и из параметра свойств перейдите к безопасности, и мы найдем путь к имени объекта следующим образом.
Шаг 1. Теперь давайте войдем в VBA из визуальной базовой опции. Его можно найти на вкладке разработчика.
Шаг 2. Как только мы окажемся в VBA, нам нужно вставить модуль. Чтобы войти в окно кода, дважды щелкните модуль, который приведет нас к окну кода.
Шаг 3. Теперь первым шагом для написания кода VBA является присвоение макросу следующего имени.
Код:
Шаг 4. Объявите переменную в виде строки, в которой будет храниться путь к файлу.
Код:
Шаг 5: Теперь давайте назначим путь к этой строке файла, который мы хотим удалить, это sample1.
Код:
Шаг 6. Теперь давайте удалим файл с помощью функции уничтожения следующим образом.
Код:
Шаг 7. Когда мы запускаем приведенный выше код и смотрим на рабочий стол, мы больше не можем найти первый созданный нами текстовый файл.
Присутствует только второй файл, а первый файл перемещен. Теперь, что произойдет, если путь к файлу был неправильным или файл даже не существовал. Теперь мы удалили первый файл, и его даже не существовало, поэтому мы можем снова запустить код, чтобы проверить, какой результат мы получим. Запустите приведенный выше код еще раз.
VBA выдает ошибку времени выполнения, что файл не найден. Это важно, о чем мы должны помнить.
Теперь давайте удалим второй файл, используя функцию kill. Опять же, нам нужен путь для второго файла, для которого нам нужно щелкнуть правой кнопкой мыши файл и из параметра свойств перейти к безопасности, и мы найдем путь рядом с именем объекта следующим образом.
Теперь у нас есть путь ко второму файлу, поэтому давайте удалим этот файл.
Шаг 1. Войдите в VBA через вкладку разработчика.
Шаг 2. Как только мы окажемся в VBA, нам нужно вставить модуль. Чтобы войти в окно кода, дважды щелкните модуль, который приведет нас к окну кода.
Шаг 3. Сначала назовите макрос, чтобы продолжить следующим образом.
Код:
Шаг 4. Аналогично предыдущему, объявите переменную в виде строки для хранения пути к файлу.
Код:
Шаг 5: В строке сохраните путь к файлу следующим образом.
Код:
Шаг 6. Теперь мы проверим существование файла с помощью функции If следующим образом.
Код:
Шаг 7. Теперь, если мы запустим приведенный выше код, мы увидим, что файл был удален и его больше нет на рабочем столе.
Шаг 8: В приведенном выше примере мы видели, что если файл не существует, VBA выдает нам ошибку, и в этом случае, поскольку файл был удален, мы можем снова запустить код, и мы видим, что вместо ошибка мы получаем персонализированное сообщение следующим образом.
Что нужно помнить
Есть несколько вещей, которые нам нужно помнить об удалении файла в VBA:
- Мы используем функцию Kill для удаления файла.
- Нам нужен путь к конкретному файлу, который нужно удалить.
- Если файл не найден, возникает ошибка.
- Файлы, удаленные функцией Kill, не попадают в корзину.
Рекомендуемые статьи
Это руководство по удалению файла VBA. Здесь мы обсуждаем, как использовать Excel VBA Delete File вместе с несколькими практическими примерами и загружаемым шаблоном Excel. Вы также можете ознакомиться с другими нашими рекомендуемыми статьями –
Удалить файл VBA
VBA Удалить файл из папки или каталога в Excel. Вы можете удалить любой файл, такой как Excel, Word, PowerPoint, CSV, Блокнот и т. д. Давайте рассмотрим различные примеры в следующем руководстве. Мы используем оператор Kill для удаления файла.
Пример удаления файла VBA
Давайте посмотрим на примере, как удалить файл в Excel с помощью VBA. Следующий пример помогает удалить файл Excel.
Примечание. Вы можете проверить результат, создав образец файла в указанной папке до и после запуска макроса.
Следующий макрос помогает удалить файл документа Word.
Следующий код VBA помогает удалить файл CSV.
Пример удаления файла с помощью объекта VBA FSO
Давайте рассмотрим пример кода макроса VBA для удаления файла Excel с помощью VBA FileSystemObject (FSO) в Excel.
Инструкции по использованию макрокода VBA
Вот инструкции по использованию вышеуказанного макроса в редакторе Visual Basic.
- Откройте редактор Visual Basic (VBE), нажав Alt +F11.
- Перейдите в окно кода, нажав F7.
- Копировать указанный выше макрос или процедуру
- Вставьте скопированный код в окно кода.
- Запустите макрос, нажав F5 или команду "Выполнить".
- Пожалуйста, проверьте указанную папку до и после запуска макроса.
- После запуска макроса указанная папка удаляет указанный файл.
Статьи по теме
Вы также можете узнать полную информацию, такую как синтаксис, пример и т. д., нажав следующие кнопки.
Оставить комментарий Отменить ответ
Вы должны войти в систему, чтобы оставить комментарий.
Вопросы и ответы на собеседовании по Excel VBA
Функции VBA по категориям
Шаблоны управления проектами
Пакет профессиональных шаблонов PM
Учебное пособие по VBA
Последние публикации
Программирование VBA
Категории
Создавайте профессиональные инструменты и приложения автоматизации для своих проектов с помощью наших готовых к использованию кодов и приложений VBA.
Чтобы удалить файл с помощью VBA, вам нужно использовать функцию уничтожения VBA. Однако проблема с функцией VBA Kill заключается в том, что она не проверяет, существует ли файл, а вместо этого выдает ошибку.
VBA Удаление нескольких файлов с использованием подстановочных знаков (*)
Если вам нужно удалить много файлов в одном каталоге, которые соответствуют определенной последовательности символов в имени, вы можете использовать подстановочные знаки (*).
Подстановочный знак (*) заменяет любое количество символов (более одного) в имени файла. Пример ниже:
Удаление файлов VBA, соответствующих регулярному выражению
В некоторых случаях существуют более сложные правила, определяющие файлы, которые мы должны удалить. В таком случае мы можем создать новую функцию, использующую регулярные выражения VBA:
Благодаря этим функциям мы можем удалять файлы, используя шаблоны (обязательно прочитайте мой учебник по регулярным выражениям VBA, если вы новичок в Regex).
Давайте воспользуемся приведенным ниже примером.
Я хочу удалить файлы «1.txt» и «2.txt», сохранив оставшиеся файлы. Следовательно, я могу использовать шаблон регулярного выражения 6, что означает любую цифру. Следовательно, выполнение будет выглядеть так:
Рекурсивное удаление файлов VBA
В некоторых случаях вы можете не знать, в каком каталоге находится файл, который вы хотите удалить, и у вас есть только корневой каталог. Обход этих папок вручную является громоздким. Однако с помощью моей процедуры TraversePath, которую я создал в функции каталога postVBA — Как перемещаться по каталогам, мы можем создать нашу собственную функцию RecursiveKill:
Теперь, используя тот же пример, что и выше, предположим, что у нас есть файл 1.txt, скопированный несколько раз в нашем каталоге. Мы можем легко удалить все копии следующим образом:
Читайте также: