【分享成果,随喜正能量】当你接触的人越多,层面越高,你会发现:越高端、越有教养的人大都相互支持,抱团发展,因为你好了大家都好。越低端、越缺德行的人,越是喜欢诋毁嫉妒,拆台,鄙视,因为我不好,我也不想让你好。所以,和一群有同样格局和思维的人一起前行才是最重要的。。
《VBA代码解决方案》这套教程是我最早推出的教程,目前已经是第二版修订了。这套教程定位于入门后的提高,在学习这套教程过程中,侧重点是要理解及掌握我的“积木编程”思想。要灵活运用教程中的实例像搭积木一下把自己喜欢的代码摆好。
这套教程共三册,一百四十七讲,内容覆盖较广,也是初级和中级间的过度教程,改版后的内容主要是提供程序源码文件及代码修正为32位和64位兼用代码。今后一段时间会给大家陆续推出。今日的内容是第44讲:VBA删除指定的文件
第四十四讲 利用VBA代码,如何删除指定的文件
大家好,我们今日继续讲解VBA代码解决方案,今日讲解的是第44讲内容:如何删除指定文件。在实际的文件操作中,如果我们需要删除某个文件,往往是选择某个文件,右键点击删除,或者是直接放到回收站中。那么在VBA中如何做到删除文件呢?这时我们往往会用到GetOpenFilename方法显示标准的内置“打开”对话框,选择某个文件,然后再执行相关的操作。
1 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 mynz_44() '44 利用VBA代码,如何删除指定的文件
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
代码窗口:
代码解析:mynz_44()过程使用GetOpenFilename方法显示标准的内置“打开”对话框,获取用户选定文件的文件名后使用Kill语句删除。
a) 第5行代码显示标准的“打开”对话框,将对话框的标题设置为“删除文件”,将MultiSelect参数设置为True,允许选定多个文件。
b) 第6行代码,获得返回值。当用户选定文件后,返回的是选定的文件名或用户输入的文件名。因为MultiSelect参数已设置为True,所以返回值将是一个包含所有选定文件名的数组(即使仅选定了一个文件名)。如果用户取消了对话框,则该值为False。
c) 第8行到第12行代码,经询问用户后使用Kill语句从磁盘中删除用户选定的文件。
运行mynz_44过程,显示标准的内置“打开”对话框,删除用户选定的文件.
- 特别提示2: VBA中数组下界默认从0开始,但使用GetOpenFilename方法选择多个文件时返回的包含选定文件名的数组下界是从1开始。
下面实测上述代码,运行后弹出删除文件对话框:
选择文件后,选择打开:
选择“是”之后,文件将被删除。
- 特别提示3:此时删除文件时永久的删除,在回收站中是看不到的。
今日内容回向:
1 GetOpenFilename方法的意义是什么?
2 如何完成删除文件的过程?
3 上面的内容中有三个特别提示,是否理解呢?
本讲内容参考程序文件:VBA代码解决方案修订(1-48).xlsm
我20多年的VBA实践经验,全部浓缩在下面的各个教程中:
【分享成果,随喜正能量】有时候觉得遇到麻烦,其实是跟自己过不去,该发生的已经发生,该面对的始终要面对,该承担的始终要承担。。
,