|
本帖最后由 wbzxz 于 2011-4-26 00:30 编辑
获得文件名的几种方法之一:Dir函数
自己学习VBA的进程总是很慢,原来在非常惧怕在VBA中打开文件进行处理,碰到这样的问题总是跳了过去,在兰版的鼓励下,试着帮别人解决问题,竟然糊里糊涂的写了一个灰常灰常简单的文本导入到Excel的程序。在编写代码,翻阅资料的过程中,感觉要学的知识不少,但是要打开文件进行处理,首要任务应该是获取文件名,所以就想把这个问题思考一下,与大家讨论与分享。
个人感觉,获取要处理的文件名,大概是两个途径吧,一是利用文件对话框,可以自己选择文件,二是不能自己选择,一次性获得某个文件夹下某类扩展名的文件;
本节,我想用VBA自带的dir函数来完成获得某个文件夹下的某类扩展名文件,因为关于这个功能网上资料太多啦,所以学起来还比较省劲,利用dir函数编了一个获取文件名的函数,嘿嘿,自己用着方便。
详见代码与解释
- '下面这个函数具有获取给定路径下文件名的功能;
- '函数有三个参数sPathName,sPartFileName,sExtFileName
- 'sPathName 必选参数,用来传递路径;
- 'sPartFileName 可选参数,用来传递文件名包含什么字符;
- 'sExtFileName 可选参数,用来传递文件的扩展名;
- '本函数返回一个下标从1开始的字符串数组;
- '如果没有得到文件名,得到一个元素的数组,元素值为空值
- Function getFileName(sPathName As String, Optional sPartFileName As String, Optional sExtFileName As String)
-
- Dim iCounter As Integer '定义iCounter变量作为计数器
- Dim sTempFileName As String '定义变量sTempFileName储存dir函数每调用一次获得的文件名
- Dim asFileName() As String '定义数组变量asFileName储存获得的文件名
-
- '以下为dir函数赋初值
- sPathName = sPathName & "" & "*" & sPartFileName & "*." & sExtFileName '生成sPathName字符串供dir函数的pathname参数使用
- sTempFileName = Dir(sPathName) '初始化dir函数,获取路径下第一个文件名
-
- '判断是否获得文件名
- If sTempFileName = "" Then
- ReDim Preserve asFileName(1 To 1)
- asFileName(1) = ""
- getFileName = asFileName
- Exit Function '如果没有得到符合条件的文件名,制造一个只含一个元素的数组,元素值为空,然后退出函数过程;
- End If
-
- '如果发现获得了文件名,开始循环,依次获得文件名
- iCounter = 1 '给计数器赋初值
- Do While sTempFileName <> "" '如果路径下找到了需要的文件名,那么继续查找
- ReDim Preserve asFileName(1 To iCounter) '利用计数器,重新定义数组asFileName
- asFileName(iCounter) = sTempFileName '给数组元素赋值
- sTempFileName = Dir '利用dir函数,得到第二个文件
- iCounter = iCounter + 1
- Loop
- getFileName = asFileName '将获得的数组赋值给函数名
-
- End Function
复制代码
函数肯定有不完善之处,请各位老师和童鞋指出不足,非常感谢,上面的函数,有看不懂的童鞋,可以跟帖交流,相互讨论。
附件供测试使用,代码在“dir函数法.xls”文件的模块1中,其他文件为测试辅助文件
获取文件名的方法1-dir函数.rar
(24.39 KB, 下载次数: 238)
|
评分
-
查看全部评分
|