猿问

在VBA中删除文件

使用VBA,我如何:

  1. 测试文件是否存在,如果存在,

  2. 删除它?


吃鸡游戏
浏览 733回答 3
3回答

饮歌长啸

1.)在这里检查。基本上做到这一点:Function FileExists(ByVal FileToTest As String) As Boolean&nbsp; &nbsp;FileExists = (Dir(FileToTest) <> "")End Function我将留给您找出所需的各种错误处理,但这是我要考虑的错误处理内容之一:检查是否传递了空字符串。检查文件名/路径中包含非法字符的字符串2.)如何删除文件。看这个 基本上使用Kill命令,但是您需要考虑将文件设为只读的可能性。这是为您提供的功能:Sub DeleteFile(ByVal FileToDelete As String)&nbsp; &nbsp;If FileExists(FileToDelete) Then 'See above&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; ' First remove readonly attribute, if set&nbsp; &nbsp; &nbsp; SetAttr FileToDelete, vbNormal&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; ' Then delete the file&nbsp; &nbsp; &nbsp; Kill FileToDelete&nbsp; &nbsp;End IfEnd Sub同样,我将把错误处理留给您,这些也是我考虑的事情:目录和文件的行为是否应该有所不同?用户是否应该必须明确表示必须删除目录?您是要代码自动重置只读属性,还是应该向用户提供某种指示,说明已设置了只读属性?编辑:将此答案标记为社区Wiki,以便任何人可以根据需要进行修改。

精慕HU

我否则完全同意布雷特斯基的答案的另一种编码方式可能是With New FileSystemObject&nbsp; &nbsp; If .FileExists(yourFilePath) Then&nbsp; &nbsp; &nbsp; &nbsp; .DeleteFile yourFilepath&nbsp; &nbsp; End IfEnd With效果相同,但变量声明更少(或者完全没有)。FileSystemObject是一个非常有用的工具,非常值得与之友好。除了其他方面,对于文本文件编写,它有时有时可能比传统方法要快,这可能会让一些人感到惊讶。(至少以我的经验,YMMV)。

侃侃尔雅

我可能会为此感到恼火,但是如果您要删除它,那么测试存在性的重点是什么?我最主要的烦恼之一是一个应用程序引发错误对话框,显示类似“无法删除文件,它不存在!”之类的错误对话框。On Error Resume NextaFile = "c:\file_to_delete.txt"Kill aFileOn Error Goto 0return Len(Dir$(aFile)) > 0 ' Make sure it actually got deleted.如果文件不存在,任务就完成了!
随时随地看视频慕课网APP
我要回答