Макрос для удаления файла excel

Удаление любых файлов из кода VBA Excel с помощью оператора Kill и метода DeleteFile объекта FileSystemObject. Знаки подстановки, синтаксис, примеры.

Оператор Kill

Описание

Kill – это оператор, предназначенный для удаления файлов с диска.

Синтаксис

  • PathName – это строковое выражение, задающее одно или несколько имен файлов (по шаблону), которые требуется удалить.

Строка PathName может содержать каталоги (папки) и букву диска. Если файл с именем PathName не существует, будет сгенерирована ошибка.

Оператор Kill поддерживает использование знаков подстановки в последнем компоненте параметра PathName (собственное имя файла без пути к нему):

  • Звездочка (*) – заменяет любое количество символов или ни одного.
  • Вопросительный знак (?) – заменяет один символ или ни одного.

Знаки подстановки позволяют создать шаблон, по которому можно удалить сразу несколько файлов.

Примеры

Пример 1
Удаление одного файла без проверки его существования (в примере — удаление книги Excel):

Sub Primer1()

  On Error Resume Next

  Kill ThisWorkbook.Path & «Книга1.xlsx»

End Sub

Инструкция On Error Resume Next нужна для того, чтобы корректно завершить программу в том случае, если файла с именем PathName не существует.

Пример 2
Удаление одного файла с проверкой его существования:

Sub Primer2()

Dim myPathName As String

  myPathName = «C:Новая папкаФайл1.docx»

  If Dir(myPathName) <> «» Then Kill myPathName

End Sub

Пример 3
Удаление нескольких файлов по шаблону:

Sub Primer3()

  On Error Resume Next

  Kill «C:Новая папкаСправка*»

End Sub

В результате работы этого кода VBA Excel будут удалены все файлы с любыми расширениями, которые начинаются со слова «Справка». Если строку Kill "C:Новая папкаСправка*" заменить строкой Kill "C:Новая папка*2020*", она удалит все файлы, в имени которых есть подстрока «2020».

Как удалить объект ThisWorkbook с помощью оператора Kill из кода VBA Excel, размещенного в нем же, смотрите в статье: Удаление книги из собственного кода.

Метод DeleteFile

Описание

DeleteFile – это метод объекта FileSystemObject, предназначенный для удаления файлов с диска из кода VBA Excel.

Синтаксис

Object.DeleteFile PathName, [force]

  • Object – переменная, возвращающая объект FileSystemObject (обязательный параметр);
  • PathName – строковое выражение, задающее одно или несколько имен файлов (по шаблону), которые требуется удалить (обязательный параметр);
  • force – значение типа Boolean: True – удаляются все файлы, False (по умолчанию) – не удаляются файлы с атрибутом «только для чтения» (необязательный параметр).

В последнем компоненте параметра PathName (собственное имя файла без пути к нему) можно использовать знаки подстановки, также, как и для оператора Kill. Если указанный файл не существует, будет сгенерирована ошибка.

Примеры

Пример 4
Удаление одного файла с проверкой его существования:

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
Удаление нескольких или всех файлов по шаблону:

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.


Фразы для контекстного поиска: удаление файла, удаление всех файлов, удаление нескольких книг, удаление всех книг, удаление по шаблону.


Содержание

  1. Удаление файлов с помощью VBA в Excel
  2. Удаление файлов с помощью VBA в Excel
  3. VBA Удалить файл — Как удалить файл с помощью VBA (с примерами)
  4. Введение в VBA Удалить файл
  5. Синтаксис удаления файла в Excel VBA
  6. Как удалить файл с помощью VBA?
  7. Пример № 1 — VBA Удалить файл
  8. Пример № 2 — VBA Удалить файл
  9. То, что нужно запомнить
  10. Рекомендуемые статьи
  11. Как удалить папку или все файлы из папки через VBA

Удаление файлов с помощью VBA в Excel

Удаление файлов с помощью VBA в Excel

Добрый день, уважаемые читатели блога! Как водится, сегодня мы поговорим о программе Excel, но в не совсем привычной для нас функции — файловом менеджере. Постараюсь ответить на вопрос — может ли Excel с помощью макросов удалять файлы?

Ответ однозначный — да. Для этого в языке VBA есть специальный оператор — kill. Для нас он и представляет определённый интерес.

Давайте посмотрим как его можно использовать. Имеется папка (в моём примере это C:Для всех), её нужно очистить от файлов с расширением *.xlsx.

Создадим новую книгу и, как обычно, добавим в неё стандартный модуль. Мы рассматривали этот алгоритм в предыдущих статьях.

  • вкладка «Разработчик», кнопка «Visual basic»;
  • вставляем новый модуль и помещаем следующий код макроса.

Sub DF()
‘ Удаление всех файлов из папки с расширением .xlsx
Kill «C:Для всех» & «*.xlsx»
End Sub

Будьте внимательны — макрос не удаляет файлы в «Корзину», а полностью стирает их с жёсткого диска компьютера!

Аналогично сочетанию клавиш Shift+Delete.

Проверим работоспособность нашего кода. Запустим окно выбора макросов комбинацией клавиш Alt+F8 и нажмём «Выполнить».

Результат на лицо — в папке остался только один файл «Изменение листа.xlsm» потому что у него разрешение не совпадает с указанным в макросе.

Также хочется отметить, что привычное сочетание клавиш Ctrl+Z не поможет восстановить файлы.

Необходимая оговорка — макрос можно использовать для всех типов файлов. Для этого необходимо изменить в макросе расширение *.xlsx на нужное для удаления вам.

Источник

VBA Удалить файл — Как удалить файл с помощью VBA (с примерами)

Введение в VBA Удалить файл

Иногда, когда мы работаем в VBA, мы создаем некоторые нежелательные файлы, или у нас есть некоторые нежелательные файлы на нашем компьютере. Как мы от них избавимся? Мы можем просто пойти и удалить каждый файл вручную, найдя файл и щелкнув по нему правой кнопкой мыши, затем мы нажимаем кнопку удаления, чтобы удалить файл. Или мы можем нажать кнопку удаления на клавиатуре, чтобы удалить файл. Но как мы сделаем это в VBA, мы узнаем из этой статьи.

Итак, теперь мы поняли концепцию этой темы, что нам нужно удалить файл с помощью макросов VBA. В VBA у нас есть команда kill, которая используется для удаления файла из его местоположения. Когда мы просто удаляем файл, пройдя через процесс поиска файла и щелкнув правой кнопкой мыши по нему, чтобы удалить или даже нажать кнопку удаления, файл отправляется в корзину. Но когда мы используем команду Kill в VBA для удаления файла, файл навсегда удаляется с компьютера. Это не идет в корзину. Теперь давайте посмотрим на синтаксис, который мы будем использовать для удаления файла с использованием VBA. Это выглядит следующим образом:

Синтаксис удаления файла в Excel VBA

Всегда помните, что путь к файлу должен быть в кавычках. Теперь, чтобы удалить файл в VBA, мы должны иметь его путь. Как мы получаем путь к файлу? Нам нужно щелкнуть правой кнопкой мыши по файлу и выбрать свойства, которые дают нам различные варианты свойств файла, как только мы нажмем на вкладку безопасности, которая является вторым номером на вкладках, где мы можем найти путь под именем объекта. Взгляните на скриншот ниже для справки.

Путь, указанный после имени объекта, является аргументом, который нам нужно указать для функции killfile, чтобы удалить любой файл. Теперь давайте начнем удалять файлы, посмотрев на несколько примеров ниже.

Прежде чем перейти к примерам, всегда убедитесь, что у нас включена вкладка разработчика для использования макросов. Это делается путем перехода в раздел файлов, а затем в раздел параметров. Мы найдем флажок, который нужно установить, чтобы включить вкладку разработчика. Теперь давайте перейдем к примерам. Например, у меня есть два файла с именем sample 1 и sample 2. Оба являются текстовыми файлами и находятся на рабочем столе. Посмотрите на них ниже.

Как удалить файл с помощью VBA?

Давайте посмотрим примеры удаления файла в Excel VBA.

Вы можете скачать этот VBA Удалить файл Excel шаблоны здесь — VBA Удалить файл Excel шаблоны

Пример № 1 — VBA Удалить файл

Давайте сначала удалим файл образца 1 в этом примере. Оба примера будут иметь разницу в одну минуту, которую я объясню в конце темы. Во-первых, нам нужно получить путь к файлу примера 1. Чтобы сделать это, щелкните правой кнопкой мыши на файле и перейдите в раздел «Свойства», и мы найдем путь рядом с именем объекта следующим образом.

Шаг 1: Теперь давайте войдем в VBA с опцией visual basic. Его можно найти на вкладке разработчика.

Шаг 2: Как только мы находимся в VBA, нам нужно вставить модуль. Чтобы войти в окно кода, дважды щелкните модуль, который приведет нас к окну кода.

Шаг 3: Теперь первый шаг для написания кода VBA — назвать макрос следующим образом.

Код:

Шаг 4: Объявите переменную как строку, которая будет хранить путь к файлу.

Код:

Шаг 5: Теперь давайте назначим путь к этой строке файла, который мы хотим удалить, это sample1.

Код:

Шаг 6: Теперь давайте удалим файл, используя функцию Kill следующим образом.

Код:

Шаг 7: Когда мы запускаем приведенный выше код и смотрим на рабочий стол, мы больше не можем найти первый созданный нами текстовый файл.

Присутствует только второй файл, и первый файл перемещается. Теперь, что произойдет, если путь к файлу был неправильным или файл даже не существует. Теперь мы удалили первый файл, и он даже не существует, поэтому мы можем запустить код еще раз, чтобы проверить, какой результат мы получим. Запустите приведенный выше код еще раз.

VBA дает нам ошибку во время выполнения, что файл не найден. Это важно, что мы должны иметь в виду.

Пример № 2 — VBA Удалить файл

Теперь давайте удалим второй файл, используя функцию kill. Опять же, нам нужно указать путь ко второму файлу, для которого нам нужно щелкнуть правой кнопкой мыши по файлу, и из опции свойств перейти к безопасности, и мы найдем путь к имени объекта следующим образом.

Теперь у нас есть путь для второго файла, поэтому давайте удалим этот файл.

Шаг 1: Войдите в VBA через вкладку разработчика.

Шаг 2: Как только мы находимся в VBA, нам нужно вставить модуль. Чтобы войти в окно кода, дважды щелкните модуль, который приведет нас к окну кода.

Шаг 3: Сначала назовите макрос, чтобы продолжить работу следующим образом.

Код:

Шаг 4: Как и выше, объявите переменную как строку для хранения пути к файлу.

Код:

Шаг 5: В строке сохраните путь к файлу следующим образом.

Код:

Шаг 6: Теперь мы проверим, что файл даже существует, используя функцию If следующим образом.

Код:

Шаг 7: Теперь, если мы запустим приведенный выше код, мы увидим, что файл удален и его больше нет на рабочем столе.

Шаг 8: В приведенном выше примере мы видели, что если файл не существует, VBA выдает нам ошибку и в этом случае, поскольку файл был удален, мы можем снова запустить код и увидеть, что вместо ошибки мы получаем персонализированное сообщение следующим образом.

То, что нужно запомнить

Есть несколько вещей, которые мы должны помнить об удалении файла в VBA:

  1. Мы используем функцию Kill для удаления файла.
  2. Нам нужен путь к конкретному файлу, который нужно удалить.
  3. Если файл не найден, мы сталкиваемся с ошибкой.
  4. Файлы, удаленные функцией Kill, не попадают в корзину.

Рекомендуемые статьи

Это руководство по удалению файла VBA. Здесь мы обсудим, как использовать Excel VBA Delete File вместе с несколькими практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи —

  1. Как использовать VBA While Loop?
  2. VBA Удалить дубликаты
  3. Понимание типов данных VBA
  4. VBA Sleep с примерами

Источник

Как удалить папку или все файлы из папки через VBA

Предположим, что ежедневно во временную папку поступают файлы отчетов от филиалов. Они могут собираться из почты кодом вроде такого: Сохранить вложения из Outlook в указанную папку или добавляться в папку иными средствами. Далее Вы собираете данные из этих файлов неким кодом(вроде этого — Как собрать данные с нескольких листов или книг?). Но с каждым днем файлов все больше и больше и приходится заходить в папку и руками чистить её от лишних файлов, чтобы при сборе данных не приходилось каждый раз искать и отбирать только новые файлы.
Если надо удалять только конкретные файлы(например только файлы Excel, содержащие в имени слово «отчет»), то можно использовать такой код:

Sub Remove_AllFilesFromFolder() Dim sFolder As String, sFiles As String ‘диалог запроса выбора папки с файлами ‘подробнее про диалоги выбора папки или файла: ‘ http://www.excel-vba.ru/chto-umeet-excel/dialogovoe-okno-vybora-fajlovpapki/ With Application.FileDialog(msoFileDialogFolderPicker) If .Show = False Then Exit Sub sFolder = .SelectedItems(1) End With sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, «», Application.PathSeparator) ‘отбирать только файлы Excel, содержащие в имени слово «отчет» sFiles = Dir(sFolder & «*отчет*.xls*») ‘цикл по всем файлам в папке On Error Resume Next Do While sFiles <> «» ‘удаляем файл Kill sFolder & sFiles If Err.Number = 70 Then MsgBox «Невозможно удалить файл ‘» & sFiles & «‘. Возможно файл открыт в другой программе или нет прав на удаление», vbCritical, «www.excel-vba.ru» Err.Clear End If ‘на всякий случай передаем управление системе, ‘чтобы дождаться удаления DoEvents ‘получаем имя следующего файла в папке sFiles = Dir Loop End Sub

Чтобы удалять полностью все файлы в папке(а не только файлы Excel), а саму папку оставить, то строку sFiles = Dir(sFolder & «*отчет*.xls*») надо записать так: sFiles = Dir(sFolder & «*»)

Если необходимо удалять файлы по дате создания/изменения(например, только файлы, созданные раньше 01.03.2017), то можно использовать такой код:

Sub Remove_FilesFromFolder_AfterDate() Dim sFolder As String, sFiles As String Dim dd As Date, dKill As Date ‘задаем дату. Если файл был создан/изменен до этой даты — он будет удален dKill = CDate(«01.03.2017») ‘можно задать проще: dKill = #3/1/2017# ‘диалог запроса выбора папки с файлами ‘подробнее про диалоги выбора папки или файла: ‘ http://www.excel-vba.ru/chto-umeet-excel/dialogovoe-okno-vybora-fajlovpapki/ With Application.FileDialog(msoFileDialogFolderPicker) If .Show = False Then Exit Sub sFolder = .SelectedItems(1) End With sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, «», Application.PathSeparator) sFiles = Dir(sFolder & «*») ‘цикл по всем файлам в папке On Error Resume Next Do While sFiles <> «» ‘получаем дату создания или изменения файла dd = FileDateTime(sFolder & sFiles) ‘если дата файла меньше заданной для удаления(был создан раньше) If dd dKill = CDate(«01.03.2017») нужно заменить на такую: dKill = Date . Если удалить надо файлы недельной давности, то: dKill = Date-7

Если же необходимо удалить папку полностью, а не только файлы в ней, то лучше использовать такой код:

Sub RemoveFolderWithContent() Dim sFolder As String, sFiles As String ‘диалог запроса выбора папки на удаление With Application.FileDialog(msoFileDialogFolderPicker) If .Show = False Then Exit Sub sFolder = .SelectedItems(1) End With sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, «», Application.PathSeparator) ‘путь к папке можно задать статично, если он заранее известен и не изменяется ‘ sFolder = «C:tempЕжедневные отчеты10072017» ‘путь к папке, которую надо удалить Shell «cmd /c rd /S/Q «»» & sFolder & «»»» End Sub

Этот код удалить папку вместе со всеми файлами буквально за секунду.
Вообще в VBA есть специальная команда для удаления директорий(папок) RmDir . Но она способна удалить только пустую папку, поэтому редко когда можно найти её практическое применение. Если в файле есть хоть один файл то команда RmDir выдаст ошибку ’75’ — File/Path access error .

Статья помогла? Поделись ссылкой с друзьями!

Источник

Удаление файлов с помощью VBA в Excel

Добрый день, уважаемые читатели блога! Как водится, сегодня мы поговорим о программе Excel, но в не совсем привычной для нас функции — файловом менеджере. Постараюсь ответить на вопрос — может ли Excel с помощью макросов удалять файлы?

Ответ однозначный — да. Для этого в языке VBA есть специальный оператор — kill. Для нас он и представляет определённый интерес. 

Давайте посмотрим как его можно использовать. Имеется папка (в моём примере это C:Для всех), её нужно очистить от файлов с расширением *.xlsx.

Удаление файлов с помощью VBA в Excel

Создадим новую книгу и, как обычно, добавим в неё стандартный модуль. Мы рассматривали этот алгоритм в предыдущих статьях.

  • вкладка «Разработчик», кнопка «Visual basic»;
  • вставляем новый модуль и помещаем следующий код макроса.

Sub DF()
‘ Удаление всех файлов из папки с расширением .xlsx
Kill «C:Для всех» & «*.xlsx»
End Sub

Удаление файлов с помощью VBA в Excel

Будьте внимательны — макрос не удаляет файлы в «Корзину», а полностью стирает их с жёсткого диска компьютера! 

Аналогично сочетанию клавиш Shift+Delete.

Проверим работоспособность нашего кода. Запустим окно выбора макросов комбинацией клавиш Alt+F8 и нажмём «Выполнить».

Удаление файлов с помощью VBA в Excel

Результат на лицо — в папке остался только один файл «Изменение листа.xlsm» потому что у него разрешение не совпадает с указанным в макросе.

Также хочется отметить, что привычное сочетание клавиш Ctrl+Z не поможет восстановить файлы.

Удаление файлов с помощью VBA в Excel

Необходимая оговорка — макрос можно использовать для всех типов файлов. Для этого необходимо изменить в макросе расширение *.xlsx на нужное для удаления вам.

������������� �������� ������

������������� �������� ������

��������� �������� VBA, ����� ������� ��� ��������� �����, ��� � ������ ������ � ������������ � ��������� �����������.

����� ������� ��������� ����, ����� ��������������� ��������� �������� (������� 3.49).

������� 3.49. �������� �����

Sub DeleteFile()

Kill �C:���������primer.xls�

End Sub

� ���������� ���������� ������� ������� ����� ������ ���� primer.xls, ������������� �� ������ �: ���������.

��� �������� ������ ������ � ������������ ����������� ����� ������������ ��������� ������ (������� 3.50).

������� 3.50. �������� ������ ������

Sub DeleteFiles()

‘ �������� ���� ������ � ����������� XLS �� �������� �����

Kill �C:���������� & �*.xls�

End Sub

����� ���������� ����� ������� �� ����� ��������� �� ����� �: ����� ������� ��� �����, ������� ���������� XLS.

��� �������� ������ � ������� ����������� �������� ������� ���������, ��� ��� �� ���������� � �������, � ������������ ��������� � �������� �����.

Home / VBA / VBA Delete Workbook (Excel File)

To delete an Excel file from a folder you can use two different methods. The first method is the “Kill” statement which takes the file path to refer to the file that you wish to delete. The second method is the FileSystemObject object which has a method associated with it to delete a file.

To use these codes, go to the VBE (Code Editor) from the developer tab.

Delete a File using VBA (Kill Function)

Kill function helps you to delete a single file or multiple files, and use wildcard characters to delete more than one file. Below is the one-line code that deletes the file from the folder that I have on the desktop.

Kill "C:UsersDellDesktopSample Datafile-one.xlsx"

This code will show you an error if the workbook that you specified to delete doesn’t exist.

Helpful Links: Run a Macro – Macro Recorder – Visual Basic Editor – Personal Macro Workbook

Delete All the Files from a Folder using VBA

And if you want to delete all the files that you have in a folder, you can use a wildcard character.

Kill "C:UsersDellDesktopSample Data*.xl*"

Delete a File using the FileSystemObject (Object)

The file system object provides you with access to the computer’s file system. You can learn about it from here, but now, let’s write a code to remove a file.

Full Code

Sub vba_delete_file()
Dim FSO
Dim myFile As String
Set FSO = CreateObject("Scripting.FileSystemObject")
myFile = "C:UsersDellDesktopSample Datafile1.xlsx"
FSO.DeleteFile myFile, True
End Sub

Let’s say you need to write a code that can check for a file, (exists or not) and then delete it. Here’s the code that you need.

Sub vba_delete_file()
Dim FSO
Dim myFile As String
Set FSO = CreateObject("Scripting.FileSystemObject")
myFile = "C:UsersDellDesktopSample Datafile1.xlsx"
If FSO.FileExists(myFile) Then
    FSO.DeleteFile myFile, True
    MsgBox "Deleted"   
Else
    MsgBox "There's no workbook with this name."   
End If   
End Sub

More on VBA Workbooks

VBA Save Workbook | VBA Close Workbook | VBA ThisWorkbook | VBA Rename Workbook | VBA Activate Workbook | VBA Combine Workbook | VBA Protect Workbook (Unprotect) | VBA Check IF a Workbook is Open | VBA Open Workbook | VBA Check IF an Excel Workbook Exists in a Folder| VBA Create New Workbook (Excel File)

  • VBA Workbook

VBA Delete File

Introduction to VBA Delete File

Sometimes when we work in VBA we create some unwanted files, or we have some unwanted files on our computer. How do we get rid of them? We can simply go and delete each file manually by locating the file and right click on it then, we click on the delete button to delete the file. Or we can press the delete button from the keyboard to delete the file. But how do we do this in VBA is what we will learn in this article.

So now we have understood the concept of this topic that we need to delete a file by using VBA macros. In VBA, we have a kill command which is used to delete a file from its location. When we simply delete the file by going through the process of locating the file and right-clicking on it to delete or press the delete button even, the file goes to the recycle bin. But when we use the Kill command in VBA to delete a file the file is permanently deleted from the computer. It doesn’t go to the recycle bin. Now let us look at the syntax which we will be using to delete a file using VBA. It is as follows:

Syntax of Delete File in Excel VBA

String = “ Path of the File “
Kill String

Always remember that the path of the file should be in the inverted commas. Now to delete a file in VBA we must have its path. How do we get a path of the file? We need to right-click on the file and click on properties which give us different options for the properties of the file once we click on the security tab which is the second number in the tabs we can find the path location under the object name. Have a look at the screenshot below for reference.

The path written after the object name is the argument we need to feed for the killfile function in order to delete any file. Now let us start deleting files by looking at a few examples below.

Before we move to examples always ensure that we have the developer’s tab enabled in order to use macros. It is done by moving to the files section and then to the options section. We will find a checkbox that should be checked to enable the developer’s tab. Now let us move ahead to examples. For example, I have two files named sample 1 and sample 2. Both are text files and are on desktop. Have a look at them below.

Sample 1

How to Delete a File Using VBA?

Let’s see the examples of Delete File in Excel VBA.

You can download this VBA Delete File Excel Templates here – VBA Delete File Excel Templates

Example #1 – VBA Delete File

Let us first delete the sample 1 file in this example. Both the examples will have one minute difference which I will explain at the end of the topic. First, we need to get a path for the sample 1 file. In order to do that right click on the file and from the properties option go to security and we will find the path to beside the object name as follows.

Sample 1 path

Step 1: Now let us enter into VBA from the visual basic option. It can be found under the developer’s tab.

VBA delete Example 1-1

Step 2: Once we are in VBA we need to insert a module. To enter the code window double click on the module which will take us to the code window.

VBA Delete module

Step 3: Now the first step for writing a VBA code is to name the macro as follows.

Code:

Sub Sample()

End Sub

VBA delete Example 1.1

Step 4: Declare a variable as a string which will store the path for the file.

Code:

Sub Sample()

Dim KillFile As String

End Sub

VBA delete Example 1.2

Step 5: Now let us assign the path to this string of the file we want to delete which is sample1.

Code:

Sub Sample()

Dim KillFile As String
KillFile = "C:UsersCBA_amardeepDesktopSample1.txt"

End Sub

VBA delete Example 1.3

Step 6: Now let us delete the file using the Kill Function as follows.

Code:

Sub Sample()

Dim KillFile As String
KillFile = "C:UsersCBA_amardeepDesktopSample1.txt"
Kill KillFile

End Sub

VBA delete Example 1.4

Step 7: When we run the above code and look at the desktop we can no longer find the first text file we created.

Sample 1

Only the second file is present and the first file is moved. Now, what happens if the file path was wrong or the file didn’t even exist. Now we have deleted the first file and it didn’t even exist so we can run the code again to check what result we will get. Run the above code again.

Debug

VBA gives us a runtime error that the file is not found. This is important which we need to keep in mind.

Example #2 – VBA Delete File

Now let us delete the second file using the kill function. Again we need to have the path for the second file for which we need to right click on the file and from the properties option go to security and we will find the path to in beside the object name as follows.

Sample 2 properties

Now we have the path for the second file so let us delete this file.

Step 1: Enter into VBA through the developer’s tab.

VBA Delete Example 2-1

Step 2: Once we are in VBA we need to insert a module. To enter the code window double click on the module which will take us to the code window.

VBA Delate module

Step 3: Name the macro first in order to proceed further as follows.

Code:

Sub sample1()

End Sub

VBA Delete Example 2.1

Step 4: Similar to above, declare a variable as a string to store the file’s path.

Code:

Sub sample1()

Dim KillFile As String

End Sub

VBA Delete Example 2.2

Step 5: In the string store the path of the file as follows.

Code:

Sub sample1()

Dim KillFile As String
KillFile = "C:UsersCBA_amardeepDesktopSample2.txt"

End Sub

VBA Delete Example 2.3

Step 6: Now we will check that the file even exists using the If function as follows.

Code:

Sub sample1()

Dim KillFile As String
KillFile = "C:UsersCBA_amardeepDesktopSample2.txt"
If Len(Dir$(KillFile)) > 0 Then
SetAttr KillFile, vbNormal
  Kill KillFile
  Else
MsgBox "File Not Found"
End If

End Sub

VBA Delete Example 2.4

Step 7: Now if we run the above code we can see that the file has been deleted and it is no longer in the desktop.

VBA Delete Example 2.5

Step 8: In above example, we have seen that if the file doesn’t exist VBA gives us an error also in this case as the file has been deleted we can run the code again and we can see that instead of the error we get a personalized message as follows.

VBA Delete

Things to Remember

There are few things which we need to remember about deleting a file in VBA:

  1. We use the Kill function to delete a file.
  2. We need to have the path of the specific file which is to be deleted.
  3. If the file is not found we encounter an error.
  4. The files deleted by the Kill function do not go in the recycle bin.

Recommended Articles

This is a guide to VBA Delete File. Here we discuss how to use Excel VBA Delete File along with few practical examples and downloadable excel template. You can also go through our other suggested articles –

  1. VBA While Loop
  2. VBA Remove Duplicates
  3. VBA Data Types
  4. VBA Sleep
 

slider85

Пользователь

Сообщений: 33
Регистрация: 21.06.2019

#1

15.10.2019 12:19:07

Добрый день. Есть открытый файл «qwerty.xlsx»в котором выполняются операции. Как очистить буфер обмена, закрыть и удалить файл без activate и select? Также чтобы не прописывать путь, так как файл создается автоматически:

Код
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="qwerty.xlsx"
 

А зачем его тогда сохранять вообще, если надо удалить? Закройте без сохранения и он сам исчезнет. Или поясните задачу конкретнее.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

slider85

Пользователь

Сообщений: 33
Регистрация: 21.06.2019

1.Создать файл, присвоить имя «qwerty» для дальнейшего обращения к файлу (если можно без сохранения присвоить имя, подскажите пожалуйста).
2. Производятся разные операции.
3. Очистить буфер обмена, закрыть и удалить файл «qwerty» — kill, close, какой код?
Нужна помощь по 3 пункту.

 

Hellmaster

Пользователь

Сообщений: 208
Регистрация: 26.03.2019

#4

15.10.2019 12:56:09

Удалить файл, из которого работает макрос не получится. Сначала надо закрыть файл, а затем удалить. Для этого нужно запускать макрос из другого файла. Если вы из другого файла запускаете макрос, то запомните в переменную путь и имя файла

Код
a=activeworkbook.fullname

затем закройте его

Код
activeworkbook.close

потом удалите с помощью Kill и очистите буфер

Код
Kill a 
Application.CutCopyMode = False

Вру. можно удалить макросом из открытой книги.

Код
 a$ = ActiveWorkbook.FullName
    ActiveWorkbook.ChangeFileAccess Mode:=xlReadOnly
    SetAttr a$, vbNormal: Kill a$
    ActiveWorkbook.Close saveChanges:=False

Изменено: Hellmaster15.10.2019 13:15:03

 

slider85

Пользователь

Сообщений: 33
Регистрация: 21.06.2019

#5

15.10.2019 13:15:18

Так выдает ошибку

Код
Workbooks.Add
    ActiveWorkbook.SaveAs Filename:="обработка.xlsx"
    a = ActiveWorkbook.FullName
a.Close
Kill a
Application.CutCopyMode = False
 

МатросНаЗебре

Пользователь

Сообщений: 5516
Регистрация: 05.02.2014

#6

15.10.2019 13:34:32

Код
Sub DelSelf()
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    Dim batFullName As String
    batFullName = ThisWorkbook.Path & "" & "selfdel.bat"
    With fso.createtextfile(batFullName, True)
        .WriteLine "chcp 1251"
        .WriteLine "if exist """ & ThisWorkbook.FullName & """ ("
        .WriteLine "DEL """ & ThisWorkbook.FullName & """"
        .WriteLine """" & batFullName & """"
        .WriteLine ") ELSE ("
        .WriteLine "DEL """ & batFullName & """"
        .WriteLine ")"
        .Close
    End With
    Shell "cmd /c " & """" & batFullName & """", vbNormalFocus
    Application.Quit
    
End Sub

Вот такой вариант удаления файла, содержащего макрос, через бат файл.

 

Апострофф

Пользователь

Сообщений: 720
Регистрация: 06.04.2015

#7

15.10.2019 13:35:46

slider85, попробуйте не

Цитата
slider85 написал:
a.Close

а

Код
ActiveWorkbook.close
 

slider85

Пользователь

Сообщений: 33
Регистрация: 21.06.2019

#8

15.10.2019 13:41:51

Цитата
Апострофф написал: ActiveWorkbook.close

1. Макрос выполняется в другом файле
2. Закрываемый и удаляемый файл НЕ является активным

 

Апострофф

Пользователь

Сообщений: 720
Регистрация: 06.04.2015

#9

15.10.2019 14:01:06

Цитата
slider85 написал:
Workbooks.Add    
ActiveWorkbook.SaveAs Filename:=»обработка.xlsx»    
a = ActiveWorkbook.FullName

файл обработка.xlsx является активным, не надо заблуждаться.

 

slider85

Пользователь

Сообщений: 33
Регистрация: 21.06.2019

Да, прописал как сказали и все работает.
Большое спасибо за помощь)

 

Hugo

Пользователь

Сообщений: 23253
Регистрация: 22.12.2012

#11

15.10.2019 20:12:44

Имхо по описанию задачи всё проще:

Код
set qwerty=workbooks.add
работаем с объектом qwerty
qwerty.close false
Application.CutCopyMode = False

Понравилась статья? Поделить с друзьями:
  • Макрос для удаления строк по значению в excel
  • Макрос для удаления строк в excel по условию макрос
  • Макрос для удаления стилей в excel
  • Макрос для удаления скрытых имен в excel
  • Макрос для удаления пустых столбцов excel