VB怎样显示文件夹内所有的文件名称

今日的内容是“VBA之EXCEL应用”的第三章“工作簿(Workbook)和工作表(Worksheet)对象(Object)”中第四节“跨工作表计算器的实现”。“VBA之EXCEL应用”这套教程从简单的录制宏的讲解,一直到窗体的搭建,内容丰富,案例众多。大家可以非常容易的掌握相关的知识,这套教程面向初学人员,共三册,十七章,都是我们在利用EXCEL工作过程中需要掌握的知识点,希望大家能掌握利用。

第五节 循环提取某目录下的所有文件

大家好,在上一讲中,我们讲了如何提取已经打开工作薄的名称和工作簿所有工作表的名称,那么如何提取某个目录文件夹下面的所有文件并同时提取文件的所有工作表名称呢(这讲我们单就EXCEL文件进行提取)?在这讲中,我们将学习到Dir函数及Do While循环,并再次展示给大家对象的层次结构。

1 循环提取某目录下的所有文件的实用场景分析

在当前路径下有个“提取文件”的文件夹,其下有若干个文件,如下图:

我们要提取出其中的EXCEL文件,并将每个文件的名称及每个文件的所有工作表名称提取出来回填到当前的工作表中。

2 提取文件夹中文件的VBA代码思路分析

为了提取文件夹中的Excel文件及每个文件的工作表名称,我们要在文件夹中建立一个循环,在循环中取得每个文件的文件名,然后打开这个文件,最后利用上节的方法得到文件的工作表名称。

上述信息得到后,可以将信息回填给工作表。

这里要求提取到的是Excel类型的文件,所以我们在提取文件的时候要注意文件类型,同时为了提高程序的运行效率,我们可以关闭电脑的屏幕刷新功能。下面我们将逐步讲解上述思路的实现过程。

我们先来看看一个函数:Dir 函数,这个函数返回一个 String,它表示与指定模式或文件属性或驱动器的卷标匹配的文件、目录或文件夹的名称。

1)pathname 可选。 指定文件名的字符串表达式,可包括目录或文件夹和驱动器。 如果未找到 pathname,则返回零长度字符串 ("")。

2)attributes 可选。 其和指定文件属性的常量或数值表达式。 如果省略它,则返回与 pathname 匹配但没有属性的文件。

vbNormal 0 (默认)指定没有属性的文件。

vbReadOnly 1 指定只读文件以及不带属性的文件。

vbHidden 2 指定隐藏文件以及不带属性的文件。

vbDirectory 16 指定目录或文件夹以及不带属性的文件。

  • 在 Microsoft Windows 中,Dir 支持使用多字符 (*) 和单字符 (?) 通配符来指定多个文件。在 Macintosh 上,这些字符被视为有效文件名称字符,且不能用作指定多个文件的通配符。因为 Macintosh 不支持通配符,请使用文件类型来标识文件组。可以使用 MacID 函数指定文件类型而不是使用文件名。
  • 必须在首次调用 Dir 函数时指定 pathname,否则将发生错误。 如果还指定文件属性,则必须包括 pathname。
  • Dir 返回与 pathname 匹配的第一个文件名。 若要获取与 pathname 匹配的任何其他文件名,请重新调用 Dir 而不使用参数。 当不再有匹配的文件名时,Dir 将返回零长度字符串 ("")。 在返回零长度字符串后,必须在后续调用中指定 pathname,否则将发生错误。
  • 可以更改为新的 pathname,而无需检索与当前 pathname 匹配的所有文件名。 但是,不能以递归方式调用 Dir 函数。 调用带 vbDirectory 属性的 Dir 不会连续返回子目录。
  • 在 Excel for Mac 2016 中,初始 Dir 函数调用将成功。 但是,对指定目录进行迭代的后续调用将导致错误。很遗憾,这是一个已知 bug。

我们来详细看看在VBA中利用的第二种循环语句DO WHILE 循环:

① Do 必需。 开始循环的定义 Do 。

⑥ Continue Do 可选。 将控制转移到循环的下一次迭代 Do 。

⑧ Loop 必需。 终止循环的定义 Do 。

3)Do...Loop 如果希望在满足条件之前重复执行一组语句,请使用此结构。如果要在判断条件之后将一组语句重复执行一定次数,则可以使用 While 或 Until 来指定 condition ,但不能同时使用两者。condition 只能在循环的开头或结尾测试一次。

6)Exit Do 通常在计算某些条件后(例如在结构中)使用 If...Then...Else。如果检测到可能导致不必要或无法继续迭代的条件(如错误值或终止请求),则可能需要退出循环。Exit Do的另一种用途是测试可能导致无限循环的情况,这是一个可运行很大甚至无限次数的循环。这时可以使用Exit Do 来转义循环。

7)可以在程序中的任意位置使用任意数量的 Exit Do 语句,在嵌套循环内使用时Exit Do 将控制转移出最内层循环,并将其转移到下一个更高的嵌套级别。

5 实现提取文件夹中文件的代码及代码运行效果

有了上面的知识点讲解,我们来看下面的代码:

myfileName = Dir() 'Dir函数是一个特殊函数。要获取其他Excel文件,您可以再次使用Dir函数而不带参数。

1)这讲的代码和上一讲的代码思路类似,只是多了一个DIR函数的文件名提取。

下面看一个代码的执行效果:

这样就完全提取出来了文件夹中的excel文件。

1) Dir函数的意义是什么?

2) 如何利用dir函数提取指定的类型文件?

3) do循环的格式是怎样的,意义是什么?

4) 如何提取文件夹中的EXCEL文件的文件名及工作表名称并回填给工作表?

本讲内容参考程序文件:工作簿03.xlsm

VBA的应用范围及学习方法:

VBA是利用Office实现个人小型办公自动化的有效手段(工具)。这是我对VBA的应用界定。在取代OFFICE新的办公软件没有到来之前,谁能在数据处理方面做到极致,谁就是王者。其中登峰至极的技能非VBA莫属!

我记得20年前自己初学VBA时,那时的资料甚少,只能看源码自己琢磨,真的很难。20年过去了,为了不让学习VBA的朋友重复我之前的经历,我根据自己多年VBA实际利用经验,推出了七部VBA专门教程。

第一套:VBA代码解决方案 是VBA中各个知识点的讲解,教程共147讲,覆盖绝大多数的VBA知识点,提供的程序文件更是一座不可多得的代码宝库,是初学及中级人员必备教程;目前这套教程提供的版本是修订第二版,程序文件通过32位和64位两种OFFICE系统测试。

第二套:VBA数据库解决方案 数据库是数据处理的专业利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,适合中级人员的学习。目前这套教程提供的是修订第一版教程,程序文件通过32位和64位两种OFFICE系统测试。

第三套:VBA数组与字典解决方案 数组和字典是VBA的精华,字典是VBA代码水平提高的有效手段,值得深入的学习,是初级及中级人员代码精进的手段。目前这套教程提供的版本是修订第一版,程序文件通过32位和64位两种OFFICE系统测试。

第四套:VBA代码解决方案之视频 是专门面向初学者的视频讲解,可以快速入门,更快的掌握这门技能。这套教程是第一套教程(修订一版)的视频讲解,视频更易接受。

第五套:VBA中类的解读和利用 是一部高级教程,讲解类的虚无与肉身的度化,类的利用虽然较少,但仔细的学习可以促进自己VBA理论的提高。这套教程的领会主要是读者的领悟了,领悟一种佛学的哲理。目前这套教程提供的版本是修订第一版,程序文件通过32位和64位两种OFFICE系统测试。

第六套教程:VBA信息获取与处理,是一部高级教程,涉及范围更广,实用性更强,面向中高级人员。教程共二十个专题,包括:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪切板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。

第七套教程:VBA之EXCEL应用 这是一部初级教程这部教程共三册,从从创建宏、对话框、工作簿和工作表对象、单元格对象等基础内容讲起,到循环结构、错误处理、字符串操作、日期和时间、事件、数组应用,函数过程等方面,一直讲解到控件和窗体对象的应用都是我们提高自己EXCEL水平的必须。

以上各教程学习顺序:7 1 3 2 6 5或者7 4 3 2 6 5。其中第四套是对第一套的视频讲解,所以第一和第四只选其一即可。可以^W^e^C^h^a^t^:VBA6337。

我要回帖

更多关于 怎样调整文件夹中文件的顺序 的文章

 

随机推荐