在如何用vba删除文件?一文中我们介绍了用vba的kill语句删除文件的方法。
但是如果直接用以下的代码删除自身,会弹出“拒绝的权限”的对话框:
Sub QQ1722187970()
Dim sFileName As String
sFileName = Excel.ThisWorkbook.FullName
Kill sFileName
End Sub
如下图所示:

这是由于打开的excel工作簿是读写模式,在读写模式下不能实现自杀。
此时,需要通过Workbook对象的ChangeFileAccess方法将工作簿的模式改为只读模式即可实现自杀。
Sub QQ1722187970()
'设置不提示消息,阻止其它弹窗消息显示
Excel.Application.DisplayAlerts = False
Const xlReadOnly = 3
Const xlReadWrite = 2
Dim sFileName As String
sFileName = Excel.ThisWorkbook.FullName
'先将excel文件设置为只读模式即可实现自杀
Excel.ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly
Kill sFileName
Excel.Application.DisplayAlerts = True
End Sub


发表评论