fso统计文件数量
- fso统计文件数量,如果不区分文件类型,可以非常方便 fso.getfolder().files.count
- 但是fso统计某种类型的文件数量,需要遍历才行
- 可以用 for each 遍历
- 最准的方法是用 fso.getExtensionName() = "" 来判断
- 用 right(filename,3)="" 得明确的知道 后缀名位数,一般是知道是哪种 后缀名才行
- 比如要统计 xls xlsx xlsm 就必须用 fso.getExtensionName( 完整filepath)
代码1:使用后缀名匹配 fso.getextensionName
Sub jackma101()
Dim path1
path1 = "C:\Users\Administrator\Desktop\test1"
Call ponyma101(path1)
End Sub
Function ponyma101(path1)
' 先查某类型的文件数量
Dim fso As Object
Dim fd1 As Object
Dim f1 As Object
Set fso = CreateObject("scripting.filesystemobject")
Set fd1 = fso.getfolder(path1)
x1 = fd1.Files.Count
Debug.Print "所有文件数为:" & x1
For Each f1 In fd1.Files
If fso.getextensionname(path1 & "\" & f1.Name) = "txt" Then
' fso.getfile(path1).getextensionname
' f1.getextensionname
'只有一种语法可这么用
y1 = y1 + 1
End If
Next
Debug.Print ".txt文件数为:" & y1
End Function
代码2 简单方法 if filename like "*.txt" then
Sub jackma101()
Dim path1
path1 = "C:\Users\Administrator\Desktop\test1"
Call ponyma101(path1)
End Sub
Function ponyma101(path1)
' 先查某类型的文件数量
Dim fso As Object
Dim fd1 As Object
Dim f1 As Object
Set fso = CreateObject("scripting.filesystemobject")
Set fd1 = fso.getfolder(path1)
x1 = fd1.Files.Count
Debug.Print "所有文件数为:" & x1
For Each f1 In fd1.Files
If f1.Name Like "*.txt" Then
'只有一种语法可这么用
' If fso.getextensionname(path1 & "\" & f1.Name) = "txt" Then
' fso.getfile(path1).getextensionname
' f1.getextensionname
y1 = y1 + 1
End If
Next
Debug.Print ".txt文件数为:" & y1
End Function
代码3 局限性
- UCase(Right(Item, 3))
- 大小写转换函数 ucase 和 lcase
- 别人写的这个,right(filename,3) 这个我觉得不准,比如 后缀名是 xlsm 这个就识别不了,不如 fso.getextensionname()
Private Sub Command1_Click()
Dim fso As Object, fpath As String
Dim myfolder As Object
fpath = "E:\初中同学"
Set fso = CreateObject("scripting.filesystemobject")
Set myfolder = fso.getfolder(fpath)
For Each Item In myfolder.Files
If UCase(Right(Item, 3)) = "TXT" Then Print Item
Next
Set fso = Nothing
End Sub
LCase 函数
语法:LCase(string)
说明:返回转成小写的 String。
必要的 string 参数可以是任何有效的字符串表达式。如果 string 包含 Null,将返回 Null。
只有大写的字母会转成小写;所有小写字母和非字母字符保持不变。
UCase 函数
语法:UCase(string)
说明:返回 Variant (String),其中包含转成大写的字符串。
必要的 string 参数为任何有效的字符串表达式。如果 string 包含 Null,将返回 Null。
只有小写的字母会转成大写;原本大写或非字母之字符保持不变。
StrConv 函数
语法:StrConv(string, conversion, LCID)
说明:返回按指定类型转换的 Variant (String)。
StrConv 函数的语法有下面的命名参数:
string 必要参数。要转换的字符串表达式。
conversion 必要参数。Integer。其值的和决定转换的类型。
LCID 可选的。如果与系统LocaleID不同,则为LocaleID(系统LocaleID为缺省值。)
conversion 参数的设置值为:
vbUpperCase 值为1 将字符串文字转成大写。
vbLowerCase 值为2 将字符串文字转成小写。
vbProperCase 值为3 将字符串中每个字的开头字母转成大写。
vbWide* 值为4* 将字符串中单字节字符转成双字节字符。
vbNarrow* 值为8* 将字符串中双字节字符转成单字节字符。
vbKatakana** 值为16** 将字符串中平假名字符转成片假名字符。
vbHiragana** 值为32** 将字符串中片假名字符转成平假名字符。
vbUnicode 值为64 根据系统的缺省码页将字符串转成 Unicode。 (在Macintosh中不可用。)
vbFromUnicode 值为128 将字符串由 Unicode 转成系统的缺省码页。 (在Macintosh中不可用。)
注意 这些常数是由 VBA 指定的。可以在程序中使用它们来替换真正的值。其中大部分是可以组合的,
例如 vbUpperCase + vbWide,互斥的常数不能组合,例如 vbUnicode + vbFromUnicode。当在不适用
的区域使用常数 vbWide、vbNarrow、vbKatakana,和 vbHiragana 时,就会导致运行时错误。
下面是一些一般情况下的有效分界符:Null (Chr$(0)),水平制表符 (Chr$(9)),换行 (Chr$(10)),
垂直制表符 (Chr$(11)),换页 (Chr$(12)) ,回车 (Chr$(13)),空白 (SBCS) (Chr$(32))。在 DBCS
中,空白的实际值会随国家/地区而不同。
说明:在把 ANSI 格式的 Byte 数组转换为字符串时,您应该使用 StrConv 函数。当您转换 Unicode
格式的这种数组时,使用赋值语句。
补充: VBA函数Lcase相对应的 函数为Lower
VBA函数Ucase相对应的函数为Upper