Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 18130|回复: 17

[分享] 获取文件名的几种方法之一-dir函数法

  [复制链接]
发表于 2011-4-26 00:27 | 显示全部楼层 |阅读模式
本帖最后由 wbzxz 于 2011-4-26 00:30 编辑

获得文件名的几种方法之一:Dir函数
自己学习VBA的进程总是很慢,原来在非常惧怕在VBA中打开文件进行处理,碰到这样的问题总是跳了过去,在兰版的鼓励下,试着帮别人解决问题,竟然糊里糊涂的写了一个灰常灰常简单的文本导入到Excel的程序。在编写代码,翻阅资料的过程中,感觉要学的知识不少,但是要打开文件进行处理,首要任务应该是获取文件名,所以就想把这个问题思考一下,与大家讨论与分享。
个人感觉,获取要处理的文件名,大概是两个途径吧,一是利用文件对话框,可以自己选择文件,二是不能自己选择,一次性获得某个文件夹下某类扩展名的文件;
本节,我想用VBA自带的dir函数来完成获得某个文件夹下的某类扩展名文件,因为关于这个功能网上资料太多啦,所以学起来还比较省劲,利用dir函数编了一个获取文件名的函数,嘿嘿,自己用着方便。

详见代码与解释

  1. '下面这个函数具有获取给定路径下文件名的功能;
  2. '函数有三个参数sPathName,sPartFileName,sExtFileName
  3. 'sPathName 必选参数,用来传递路径;
  4. 'sPartFileName 可选参数,用来传递文件名包含什么字符;
  5. 'sExtFileName 可选参数,用来传递文件的扩展名;
  6. '本函数返回一个下标从1开始的字符串数组;
  7. '如果没有得到文件名,得到一个元素的数组,元素值为空值

  8. Function getFileName(sPathName As String, Optional sPartFileName As String, Optional sExtFileName As String)
  9.   
  10.   Dim iCounter As Integer '定义iCounter变量作为计数器
  11.   Dim sTempFileName As String '定义变量sTempFileName储存dir函数每调用一次获得的文件名
  12.   Dim asFileName() As String '定义数组变量asFileName储存获得的文件名

  13.   '以下为dir函数赋初值
  14.   sPathName = sPathName & "" & "*" & sPartFileName & "*." & sExtFileName '生成sPathName字符串供dir函数的pathname参数使用
  15.   sTempFileName = Dir(sPathName) '初始化dir函数,获取路径下第一个文件名
  16.   
  17.   '判断是否获得文件名
  18.   If sTempFileName = "" Then
  19.     ReDim Preserve asFileName(1 To 1)
  20.     asFileName(1) = ""
  21.     getFileName = asFileName
  22.     Exit Function '如果没有得到符合条件的文件名,制造一个只含一个元素的数组,元素值为空,然后退出函数过程;
  23.   End If
  24.   
  25.   '如果发现获得了文件名,开始循环,依次获得文件名
  26.   iCounter = 1  '给计数器赋初值
  27.   Do While sTempFileName <> "" '如果路径下找到了需要的文件名,那么继续查找
  28.     ReDim Preserve asFileName(1 To iCounter) '利用计数器,重新定义数组asFileName
  29.     asFileName(iCounter) = sTempFileName '给数组元素赋值
  30.     sTempFileName = Dir '利用dir函数,得到第二个文件
  31.     iCounter = iCounter + 1
  32.   Loop
  33.   getFileName = asFileName  '将获得的数组赋值给函数名
  34.   
  35. End Function
复制代码

函数肯定有不完善之处,请各位老师和童鞋指出不足,非常感谢,上面的函数,有看不懂的童鞋,可以跟帖交流,相互讨论。

附件供测试使用,代码在“dir函数法.xls”文件的模块1中,其他文件为测试辅助文件 获取文件名的方法1-dir函数.rar (24.39 KB, 下载次数: 238)

评分

参与人数 6 +70 收起 理由
天棋 + 3 我来学习
webjoy + 1 学些了,谢谢!
jidian012 + 1 挺有用的,虽然看不懂,慢慢学
sunjing-zxl + 15 不错不错
青城山苦丁茶 + 20

查看全部评分

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-4-26 07:33 | 显示全部楼层
支持一下字母~~~在解答问题中可以发现很多问题,也可以学到很多知识~~
回复

使用道具 举报

 楼主| 发表于 2011-4-26 08:29 | 显示全部楼层
回复 兰色幻想 的帖子

嘿嘿,兰版,您要帮我指出错误和不足啊。
回复

使用道具 举报

发表于 2011-4-26 09:01 | 显示全部楼层
{:1112:}{:1112:}{:1112:}{:1112:}
回复

使用道具 举报

 楼主| 发表于 2011-4-26 09:03 | 显示全部楼层
回复 青城山苦丁茶 的帖子

,苦真人,您还顶呢,我是跟您学的这个dir函数,您帮我看看有什么问题和不足好不好,嘿嘿。
回复

使用道具 举报

发表于 2011-4-26 09:08 | 显示全部楼层
你这个非常非常好呀!

另外有个秘密:我写的那个有漏洞,可是一直没去改
回复

使用道具 举报

 楼主| 发表于 2011-4-26 09:24 | 显示全部楼层
是不是,改天我去看看,嘿嘿。
回复

使用道具 举报

发表于 2011-5-23 16:54 | 显示全部楼层
支持楼主,学习得不错,大家可以借鉴!
回复

使用道具 举报

发表于 2011-5-31 20:41 | 显示全部楼层
顶起来,不错不错
回复

使用道具 举报

发表于 2011-6-9 06:55 | 显示全部楼层
好好学习。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-6 20:23 , Processed in 0.269072 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表