Excel精英培训网

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

[分享] 获得文件名的几种方法之四:FileDialog对象

  [复制链接]
发表于 2011-5-19 01:38 | 显示全部楼层 |阅读模式
FileDialog对象真的很不错,可以让我们通过对话框获取文件名,那真是方便多啦,我也是初步接触这个对象,正好也属于获取文件名方法的一种,试着写了一个自定义函数,分享给大家,请大家指出我的不足,帮助我找出错误和问题,非常感谢大家
  1. '本函数具有通过文件对话框选取文件,获得文件名的功能;
  2. '本函数使用了Office应用程序中的FileDialog对象;
  3. '本函数有一个可选参数,FileType,用来传递文件类型与扩展名,String类型;默认是显示所有类型文件;
  4. '当在对话框点击取消按钮时,返回一个下标为0的数组;


  5. Function getFilename(Optional FileType As String = "") As String()
  6.   
  7.   '定义变量部分
  8.   Dim FD As FileDialog '定义FD变量,存放FileDialog对象
  9.   Dim vFst As Variant '定义vFst变量,用来在For each循环中临时存放每个被选择的文件名
  10.   Dim FileName() As String '定义一个动态数组,存放选取的文件名
  11.   Dim iCounter As Long '定义iCounter计数器,判断获得了几个文件名
  12.   
  13.    '通过application对象的FileDialog属性获得一个FileDialog对象,msoFileDialogFilePicker常量代表打开的是“文件选取器”对话框
  14.   Set FD = Application.FileDialog(msoFileDialogFilePicker)
  15.   iCounter = 1 '计数器初始化
  16.   
  17.   
  18.   With FD
  19.    
  20.     If FileType <> "" Then '对FileType参数进行判断(默认为空,如果不为空,说明用户传递进来了文件类型参数),看看用户是否传递进来文件类型参数
  21.       .Filters.Clear '利用FileDialog对象的Filters属性,返回一个FileDialogFilters对象,FileDialogFilters的clear方法是删除当前在文件对话框中应用的所有筛选器。
  22.       .Filters.Add FileType, "*." & FileType 'FileDialogFilters.Add 方法,在“文件”对话框的“文件类型”下拉列表框的筛选器列表中添加一个新的文件筛选器
  23.     End If
  24.    
  25.     .AllowMultiSelect = True 'FileDialog对象的AllowMultiSelect属性设置为true,允许用户从文件对话框中选择多个文件
  26.     .InitialFileName = ThisWorkbook.Path '设置文件对话框中初始显示的路径是当前文件路径
  27.    
  28.    
  29.     'FileDialog对象的show方法显示文件对话框,并返回一个Long 类型的值,指示用户按下的是“操作”按钮 (-1) 还是“取消”按钮 (0)。
  30.     If .Show = -1 Then
  31.    
  32.       '通过FileDialog对象的SelectedItems属性,返回FileDialogSelectedItems对象,这个对象中存放了通过文件对话框获得的所有文件名的集合
  33.       '通过for each 语句,遍历每个文件名
  34.       For Each vFst In FD.SelectedItems
  35.         ReDim Preserve FileName(1 To iCounter) '重新定义动态数组大小
  36.         FileName(iCounter) = vFst '给数组元素赋值
  37.         iCounter = iCounter + 1
  38.       Next
  39.     Else '如果按了取消按钮,就执行下面语句,生成一个下标为0的数组,元素值为空
  40.       ReDim Preserve FileName(0 To 0)
  41.       FileName(0) = ""
  42.     End If
  43.    
  44.     getFilename = FileName '把获得的文件名数组赋值给函数名
  45.    
  46.     FD.Filters.Clear '恢复筛选器到原始状态
  47.     Set FD = Nothing '清空FileDialog对象
  48.    
  49.   End With
  50. End Function
复制代码

源文件附上,内含一个简单的示例文件:
获取文件名的方法4-FileDialog对象(通过对话框获取文件名).rar (13.33 KB, 下载次数: 242)

评分

参与人数 7 +51 收起 理由
杰娃娃 + 1 好~
马万霞 + 1 我顶你。。。。。
sunjing-zxl + 21 支持一下
kevin_zkf + 6 好帖子,学习了
蚂蚁晒太阳 + 6

查看全部评分

发表于 2011-5-19 07:36 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2011-5-19 08:06 | 显示全部楼层
回复

使用道具 举报

发表于 2011-5-20 10:47 | 显示全部楼层
谢分享
回复

使用道具 举报

发表于 2011-5-21 23:38 | 显示全部楼层
支持一下师兄,先收藏了,现在看不懂,以后肯定可以的{:1712:}
回复

使用道具 举报

发表于 2011-5-22 22:59 | 显示全部楼层
回复

使用道具 举报

发表于 2011-5-23 16:53 | 显示全部楼层
下载学习一下!值得收藏!
回复

使用道具 举报

发表于 2011-5-24 19:38 | 显示全部楼层
谢谢分享,我下载看看啊
回复

使用道具 举报

发表于 2011-5-30 11:50 | 显示全部楼层
收藏起来慢慢看
回复

使用道具 举报

发表于 2011-5-30 15:27 | 显示全部楼层
分享下,呵呵
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 21:40 , Processed in 4.418042 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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