End Function我会留给你找出"/>

在VBA中删除文件

在VBA中删除文件

Deleting a file in VBA

使用VBA,我该怎么做:

  • 测试文件是否存在,如果存在,
  • 删除它?

  • 1.)点击这里。基本上这样做:

    1
    2
    3
    Function FileExists(ByVal FileToTest As String) As Boolean
       FileExists = (Dir(FileToTest) <>"")
    End Function

    我会留给你找出所需的各种错误处理,但这些都是我正在考虑的错误处理事项之一:

    • 检查传递的空字符串。
    • 检查包含文件名/路径中非法字符的字符串

    2.)如何删除文件。看这个。基本上使用Kill命令,但您需要允许文件是只读的。这是给你的功能:

    1
    2
    3
    4
    5
    6
    7
    8
    Sub DeleteFile(ByVal FileToDelete As String)
       If FileExists(FileToDelete) Then 'See above          
          ' First remove readonly attribute, if set
          SetAttr FileToDelete, vbNormal          
          ' Then delete the file
          Kill FileToDelete
       End If
    End Sub

    再次,我将把错误处理留给你,这些是我要考虑的事情:

    • 对于目录与文件,这种行为应该不同吗?用户是否必须明确表示要删除目录?

    • 您是否希望代码自动重置只读属性,或者是否应该向用户提供某种指示,即只设置了只读属性?

    编辑:将此答案标记为社区维基,以便任何人都可以根据需要进行修改。


    对Brettski的答案进行编码的另一种方法可能是完全同意的

    1
    2
    3
    4
    5
    With New FileSystemObject
        If .FileExists(yourFilePath) Then
            .DeleteFile yourFilepath
        End If
    End With

    相同的效果但更少(好吧,根本没有)变量声明。

    FileSystemObject是一个非常有用的工具,非常值得友好。除了其他任何东西,对于文本文件编写,它实际上有时可能比传统的替代方案更快,这可能会让一些人感到惊讶。 (至少根据我的经验,YMMV)。


    我可能会因此而受到抨击,但如果您要删除它,那么测试存在的重点是什么?我的一个主要的烦恼是一个应用程序抛出一个错误对话框,如"无法删除文件,它不存在!"

    1
    2
    3
    4
    5
    On Error Resume Next
    aFile ="c:\file_to_delete.txt"
    Kill aFile
    On Error Goto 0
    return Len(Dir$(aFile)) > 0 ' Make sure it actually got deleted.

    如果文件首先不存在,任务就完成了!


    以下内容可用于测试文件是否存在,然后将其删除。

    1
    2
    3
    4
    5
    Dim aFile As String
    aFile ="c:\file_to_delete.txt"
    If Len(Dir$(aFile)) > 0 Then
         Kill aFile
    End If

    在VB中,它通常是Dir来查找文件的目录。如果它不是空白然后它存在,然后使用Kill去除文件。

    1
    2
    3
    4
    test = Dir(Filename)
    If Not test ="" Then
        Kill (Filename)
    End If

    设置对Scripting.Runtime库的引用,然后使用FileSystemObject:

    1
    2
    3
    4
    5
    6
    Dim fso as New FileSystemObject, aFile as File

    if (fso.FileExists("PathToFile")) then
        aFile = fso.GetFile("PathToFile")
        aFile.Delete
    End if


    这是一个提示:您是重新使用文件名,还是计划立即执行需要删除的操作?

    没有?

    您可以使用VBA从命令提示符异步使用VBA.Shell激活命令DEL"C: TEMP scratchpad.txt"/ F:

    Shell"DEL"&chr(34)&strPath&chr(34)&"/ F",vbHide

    请注意文件名周围的双引号(ASCII字符34):我假设您有一个网络路径,或者包含空格的长文件名。

    如果它是一个大文件,或者它是在一个缓慢的网络连接上,那么即便消失即可。
    当然,你永远不会看到这是否有效;但是你立即恢复你的VBA,有时这比等待网络要好。


    您可以设置对Scripting.Runtime库的引用,然后使用FileSystemObject。它有一个DeleteFile方法和一个FileExists方法。

    请参阅此处的MSDN文章。


    推荐阅读

      linux文件异或命令?

      linux文件异或命令?,数字,系统,工作,管理,命令,数据,网络,文件,第一,单位,基

      linux删除整个命令?

      linux删除整个命令?,命令,文件夹,不了,名称,通用,系统,数据,文件,目录,格式,l

      linux文件复制的命令?

      linux文件复制的命令?,系统,文件,命令,目录,源文件,基本知识,位置,目标,选

      linux复制命令文件?

      linux复制命令文件?,系统,文件,命令,目录,基本知识,源文件,目标,文件夹,路

      linux下文件均分命令?

      linux下文件均分命令?,管理,情况,系统,工作,信息,地址,命令,目录,单位,设备,L

      linux如何命令删除?

      linux如何命令删除?,档案,系统,命令,文件,目录,通用,文件夹,终端,选项,参数,l

      linux的文件替换命令?

      linux的文件替换命令?,系统,工作,实时,命令,文件,批量,字符串,内容,方法,表

      linux查文件数量命令?

      linux查文件数量命令?,系统,数据,电脑,命令,文件,信息,代码,对比,软件,第三,l

      linux命令去重文件?

      linux命令去重文件?,系统,工作,命令,信息,数据,环境,代码,文件,目录,操作,Lin

      linux写大文件命令?

      linux写大文件命令?,服务,数据,第三,较大,基础,工具,设备,文件,大小,命令,lin

      linux匹配文件名命令?

      linux匹配文件名命令?,系统,时间,发行,位置,工具,软件,名称,盘后,电脑,盘中,l

      linux上编辑文件命令?

      linux上编辑文件命令?,系统,信息,工作,状态,命令,文件,标准,检测,工具,设备,L

      改文件名linux命令?

      改文件名linux命令?,名字,软件,文件,命令,位置,系统,文件名,目录,指令,方面,l

      linux命令文件加锁?

      linux命令文件加锁?,数据,密码,系统,设备,代码,地址,名单,信息,数字,统一,请

      linux拼接文件命令?

      linux拼接文件命令?,文件,数据,命令,代码,时间,信息,系统,情况,管理,标准,Lin

      linux文件常用命令?

      linux文件常用命令?,工作,地址,信息,系统,命令,目录,标准,情况,管理,常用命

      文件写入linux命令?

      文件写入linux命令?,文件,命令,状态,系统,名称,时间,首次,数据,数字,内容,在l

      linux命令写满文件?

      linux命令写满文件?,地址,工作,命令,系统,管理,文件,目录,标准,电脑,信息,Lin

      文件夹排序linux命令?

      文件夹排序linux命令?,系统,数字,信息,工作,时间,命令,管理,设备,单位,工具,

      linux打开文件夹命令?

      linux打开文件夹命令?,工作,系统,信息,命令,图片,文件,管理,发行,名字,名称,