Удаление рабочей книги Excel из собственного кода VBA. Удаление объекта ThisWorkbook с помощью кода VBA Excel, размещенного в нем же.
Удаление книги из собственного кода
Удаление книги Excel из собственного кода VBA может использоваться для удаления данных, ставших неактуальными при наступлении определенной даты, или же для удаления демо-версий файлов Excel с кодом VBA, предоставляемых для ознакомления заказчикам.
Удаление объекта ThisWorkbook из кода VBA Excel можно организовать с помощью оператора Kill, используя события Workbook_Open(), Workbook_Activate(), Workbook_Deactivate() и другие.
Удаление ThisWorkbook из кода VBA
Пример 1
Удаление книги Excel из собственного кода VBA с помощью оператора Kill при открытии файла с привязкой к определенной дате:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Private Sub Workbook_Open() If Date > DateSerial(2022, 6, 10) Then 'Отключение оповещений на время выполнения кода Application.DisplayAlerts = False With ThisWorkbook 'Переводим книгу в режим «Только чтение»* .ChangeFileAccess xlReadOnly 'Удаляем объект ThisWorkbook по полному имени Kill .FullName 'Закрываем книгу без сохранения** .Close 0 End With 'Включение оповещений Application.DisplayAlerts = True End If End Sub |
* Если не перевести книгу в режим «Только чтение», то выполнение оператора Kill приведет к ошибке.
** Если книгу не закрыть, то открытый экземпляр можно будет вручную пересохранить с новым именем.
Пример 2
Удаление объекта ThisWorkbook из кода VBA Excel, размещенного в нем же, с помощью метода DeleteFile объекта FileSystemObject:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Private Sub Workbook_Open() If Date > DateSerial(2022, 6, 10) Then Application.DisplayAlerts = False Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") With ThisWorkbook .ChangeFileAccess xlReadOnly fso.DeleteFile .FullName .Close 0 End With Application.DisplayAlerts = True End If End Sub |
Результат выполнения кода будет таким же, как и при выполнении кода из первого примера.
Удаление через Kill вываливается с сообщением о том, что путь к файлу не найден. И застревает на инструкции Kill. Как все-таки преодолеть эту проблему?
Сергей, я проверил работоспособность кода с оператором Kill, у меня все работает — книга удаляется (Excel 2016).
Обсуждение закрыто.