在VBA代码中,如何能够做到方便的删除指定文件-sub文件

大家好,我们今日继续讲解VBA代码解决方案,今日讲解的是第47讲内容:如何删除指定文件。在实际的文件操作中,如果我们需要删除某个文件,往往是选择某个文件,右键点击删除,或者是直接放到回收站中。那么在VBA中如何做到删除文件呢?这时,我们往往会用到GetOpenFilename方法显示标准的内置"打开"对话框,选择某个文件,然后再执行相关的操作。关于GetOpenFilename方法,我们看下面的语法讲解:

语法如下:

expression.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)

参数

a) : expression是必需的,返回一个Application对象。

b) FileFilter是可选的,指定文件筛选条件的字符串。如果省略,则默认参数值为"所有文件(*.*)"。

c) FilterIndex是可选的,指定默认文件筛选条件的索引号,取值范围为 1 到由 FileFilter 所指定的筛选条件数目。如果省略,或者取值大于可用筛选数目,则采用第一个文件筛选条件。

d) Title是可选的,指定对话框的标题。如果省略,则使用"打开"作为标题。

e) ButtonText是可选的,仅用于Macintosh。

f) MultiSelect是可选的,如果该值为True,则允许选定多个文件名,如果该值为False,则只允许选定单个文件名。默认值为False。

特别提示1:在GetOpenFilename方法中,其实是我们只希望获取用户在显示的内置 "打开"对话框中选定文件的文件名,而不想真正打开该文件。

如果要删除某文件需要利用到KILL命名,下面我们看一段代码,利用GetOpenFilename方法和KILL命令来完成删除某文件的过程:

Sub MyOpenFilename()

Dim Filename As Variant

Dim mymsg As Integer

Dim i As Integer

Filename = Application.GetOpenFilename(Title:="删除文件", MultiSelect:=True)

If IsArray(Filename) Then

mymsg = MsgBox("是否删除你所选文件?", vbYesNo, "提示")

If mymsg = vbYes Then

For i = 1 To UBound(Filename)

Kill Filename(i)

Next

End If

End If

End Sub

代码解析:MyOpenFilename过程使用GetOpenFilename方法显示标准的内置"打开"对话框,获取用户选定文件的文件名后使用Kill语句删除。

a) 第5行代码显示标准的"打开"对话框,将对话框的标题设置为"删除文件",将MultiSelect参数设置为True,允许选定多个文件。

b) 第6行代码,获得返回值。当用户选定文件后,返回的是选定的文件名或用户输入的文件名。因为MultiSelect参数已设置为True,所以返回值将是一个包含所有选定文件名的数组(即使仅选定了一个文件名)。如果用户取消了对话框,则该值为False。

c) 第8行到第12行代码,经询问用户后使用Kill语句从磁盘中删除用户选定的文件。

运行OpenFilename过程,显示标准的内置"打开"对话框,删除用户选定的文件.

特别提示2: VBA中数组下界默认从0开始,但使用GetOpenFilename方法选择多个文件时返回的包含选定文件名的数组下界是从1开始。

下面实测上述代码:

代码窗口:

在VBA代码中,如何能够做到方便的删除指定文件

运行后弹出删除文件对话框:

在VBA代码中,如何能够做到方便的删除指定文件

选择文件后,选择打开:

在VBA代码中,如何能够做到方便的删除指定文件

选择"是"之后,文件将被删除。

特别提示3:此时删除文件时永久的删除,在回收站中是看不到的。

今日内容回向:

1 GetOpenFilename方法的意义是什么?

2 如何完成删除文件的过程?

3 上面的内容中有三个特别提示,是否理解呢?

推荐阅读