首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >VBA自定义函数:统计指定扩展名的文件数量

VBA自定义函数:统计指定扩展名的文件数量

作者头像
fanjy
发布于 2024-06-05 10:28:19
发布于 2024-06-05 10:28:19
39600
代码可运行
举报
文章被收录于专栏:完美Excel完美Excel
运行总次数:0
代码可运行

标签:VBA,自定义函数

下面是整理自网上的一些统计文件数量的代码,供参考。

一个VBA自定义函数,可用于统计文件夹中的文件数,特别是指定扩展名的文件数。函数代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
' 目的: 统计文件夹中的文件数.
' 如果提供了文件扩展名, 则仅统计这种类型的文件
' 否则返回所有文件数.
Function CountFiles(strDirectory As String, Optional strExt As String = "*.*") As Double
 Dim objFso As Object
 Dim objFiles As Object
 Dim objFile As Object
 
 '设置错误处理
 On Error GoTo EarlyExit
 
 '创建对象以获取文件夹中的文件数
 Set objFso = CreateObject("Scripting.FileSystemObject")
 Set objFiles = objFso.GetFolder(strDirectory).Files
 '统计文件数 (如果提从则匹配扩展名)
 If strExt = "*.*" Then
   CountFiles = objFiles.Count
 Else
   For Each objFile In objFiles
     If UCase(Right(objFile.Path, (Len(objFile.Path) - InStrRev(objFile.Path, ".")))) = UCase(strExt) Then
         CountFiles = CountFiles + 1
     End If
   Next objFile
 End If
 
EarlyExit:
 '整理
 On Error Resume Next
 Set objFile = Nothing
 Set objFiles = Nothing
 Set objFso = Nothing
 On Error GoTo 0
End Function

可以使用下面的代码来测试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Sub test()
 Dim flDlg As FileDialog
 Dim dblCount As Double
 
 Set flDlg = Application.FileDialog(msoFileDialogFolderPicker)
 flDlg.Show
 dblCount = CountFiles(flDlg.SelectedItems(1))
 Debug.Print dblCount
End Sub

还可以使用更简洁一些的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Function GetFileCount(ByVal Folder As Variant, Optional ByVal FileFilter As String) As Variant
 Dim Files As Object
 
 If FileFilter = "" Then FileFilter = "*.*"
 
   With CreateObject("Shell.Application")
     Set Files = .Namespace(Folder).Items
     Files.Filter 64, FileFilter
     GetFileCount = Files.Count
   End With
End Function

使用下面的代码测试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Sub FileCountTest()
 Dim FileCount As Long
 Dim Folder As String
 
 With Application.FileDialog(msoFileDialogFolderPicker)
   If .Show = -1 Then
     Folder = .SelectedItems(1)
   Else
     Exit Sub
   End If
 End With
 
 FileCount = GetFileCount(Folder, "*.xls*")
 Debug.Print FileCount
End Sub

更简洁的代码来了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Sub testSimpler()
 Dim fld As String
 Dim lst As Variant
 
 fld = "C:\test\*.xl*"
 lst = Filter(Split(CreateObject("wscript.shell").exec("cmd /c Dir" & fld & " /b /a-d").stdout.readall, vbCrLf), ".")
 MsgBox UBound(lst) + 1
End Sub

统计C盘指定文件夹test中Excel文件的数量。

如果文件夹名字中有空格,则上述代码修改为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fld = Chr(34) & ThisWorkbook.Path & "\Test Folder\*.xl*" & Chr(34)

有兴趣的朋友可以根据自己的实际情况试试。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C语言字符串I\O
分析常用的处理字符串输入和输出的函数,以及如何结合这几个函数进行优化和设计一些新的处理字符串输入输出的函数。
CtrlX
2022/11/14
5.2K0
c语言从入门到实战——在系统学习C语言之前所需要了解的知识
本文基于VS2022,将介绍一系列的C语言常见概念,让读者对C语言有一个初步的了解,并对后续的学习做下铺垫。
鲜于言悠
2024/03/20
2970
c语言从入门到实战——在系统学习C语言之前所需要了解的知识
确定不进来看看吗?详细讲解C语言文件操作(示例分析每个函数)
C语言的文件操作其实很少用到,因为在后期工作中他们大多数都被封装好了,我们直接使用就行,但是对于一名修内功的程序员,了解更加底层的实现方式,还是很有价值的.
初阶牛
2023/05/04
8030
确定不进来看看吗?详细讲解C语言文件操作(示例分析每个函数)
C语言常见的文件操作函数总结
fopen(),这个函数很简单,也不容易忘。两个参数一是文件名或者路径,二是打开方式。
再睡一下就好
2025/06/11
2090
C语言常见的文件操作函数总结
初识C语言(上)
我们通常把计算机语言分为:解释型语言和编译型语言。 编译型语言:顾名思义是程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件,运用时不需要重新翻译,直接使用编译的结果即可。如:C、C++、Delphi等,现阶段因明确知道C语言为编译型语言。 优点及缺点:程序执行效率高,但依赖于编译器,跨平台性较差。
四念处茫茫
2025/01/24
1790
初识C语言(上)
【C语言篇】字符和字符串以及内存函数的详细介绍与模拟实现(上篇)
当然可以用scanf和printf输入输出,这里在之前【C语言篇】scanf和printf万字超详细介绍(基本加拓展用法)已经讲过了,这里就不再赘述,主要介绍只针对字符的函数
半截诗
2024/10/09
2430
【C语言篇】字符和字符串以及内存函数的详细介绍与模拟实现(上篇)
PTA 练习 L1-011 A-B (20 分)
本题要求你计算A−B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。
Lokinli
2023/03/09
2890
我与C语言二周目邂逅vlog—1.熟悉而又陌生-初识C语言
如题,在下是一名大二学生,希望改过自新,重新学习C语言(同时也在学习数据结构,希望各位大佬多多指教)
hope kc
2024/09/23
1810
我与C语言二周目邂逅vlog—1.熟悉而又陌生-初识C语言
C语言常用的字符串函数及案例
ASCII C把这些函数原型放在string.h头文件中,其中最常用的有strlen()、strcat()、strcmp()、strncmp()、strcpy()、strncpy()和放在stdio.h中的springf()
CtrlX
2023/03/21
1.1K0
C语言学习系列-->第一弹【初识C语言】
南桥
2024/01/26
1860
C语言学习系列-->第一弹【初识C语言】
第1讲:C语言常见概念
目前已知已经有上千种计算机语言,人们是通过计算机语言写的程序,给计算机下达指令,让计算机工作的(比如excel表格帮我们统计一些事情,教务系统对同学们的信息、作业进行管理)。
用户11290648
2024/09/25
2440
第1讲:C语言常见概念
【C语言】常见的C语言概念
那人和计算机是怎么交流的呢? 使用计算机语言。 目前已知已经有上千种计算机语言,人们们是通过计算机语言写的程序,给计算机下达指令,让计算机工作的。 C语言就是众多计算机语言中的⼀种,当然C++/Java/Go/Python都是计算机语言。
zxctscl
2024/09/20
2.1K0
【C语言】常见的C语言概念
【C/C++】C语言特性总结
已经有大约半年的时间没有碰C语言了,当时学习的时候记录了很多的笔记,但是都是特别混乱,后悔那个时候,不懂得写博客,这里凭借记忆和零零散散的笔记记录,尝试系统性地复习一下C语言。
用户7886150
2021/02/13
1.2K0
10min快速回顾C++语法(五)字符串专题
⭐写在前面的话:本系列文章旨在短时间内回顾C/C++语法中的重点与易错点,巩固算法竞赛与写题过程中常用的语法知识,精准地解决学过但有遗忘的情况,为算法刷题打下坚实的基础。
timerring
2022/09/23
1K0
pta系列之古风排版
这个题的思路大概就是,我们得到有几行之后,输入字符串之后,需要知道一共需要几列,然后算出一共几列,然后记录一下,然后按题目中的情况去存入字符数组,注意,这里我们是要用二维数组,不明白二维数组的,可以去前面看一下这篇文章,关于C语言数组的认识(1)-CSDN博客
用户11036582
2024/03/21
1780
pta系列之古风排版
C语言常见概念
人与人之间通过汉语,英语,德语相互交流,这些称为“自然语言”。人与计算机交流的语言则可称为“计算机语言”。
云泽808
2025/08/01
1790
C语言 —— 指尖跃迁 刻印永恒 - 文件操作
我们从键盘输入数据,向屏幕上输出数据,并没有打开流呢?那是因为C语言程序在启动的时候,默认打开了3个流:
迷迭所归处
2025/04/17
3010
C语言 —— 指尖跃迁 刻印永恒 - 文件操作
C语言基础语法
风中的云彩
2024/11/07
2250
PTA题解 --- 剪切粘贴(C语言)
此代码首先定义了一个原始字符串和一个剪贴板字符串来存储剪切的内容。对于每次操作,首先执行剪切操作,然后根据提供的前后字符串确定粘贴位置,进行粘贴操作。最后输出编辑后的字符串。注意,代码考虑了当找不到匹配的粘贴位置时,直接在字符串末尾进行粘贴的情况。
用户10216580
2024/03/24
3550
PTA题解 --- 剪切粘贴(C语言)
C语言字符串从入门到进阶指南
 借助“正则表达式”, 获取带有空格的字符串:scanf("%[^\n]", str);
莫浅子
2022/11/18
6830
推荐阅读
相关推荐
C语言字符串I\O
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验