<学习笔记> VBA_Line List_01补充文件

1. Dir遍历文件/文件夹

Dir函数返回为字符串类型,格式:

Dir[(pathname[, attributes])]

其中,pathname为文件或文件夹的路径;attribute用于确定返回的属性,当attribute为空时,默认为vbnomal,即返回pathname下文件名称字符串。

attribute属性参数如下,可以填写“常量”或“0”.

常量说明
vbNormal0(默认)指定没有属性的文件。
vbReadOnly1指定只读文件以及不带属性的文件。
vbHidden2指定隐藏文件以及不带属性的文件。
vbSystem4指定系统文件以及不带属性的文件。 在 Macintosh 上不可用。
vbVolume8指定卷标;如果指定任何其他属性,则忽略 vbVolume。 在 Macintosh 上不可用。
vbDirectory16指定目录或文件夹以及不带属性的文件。
vbAlias64指定文件名为别名。 仅在 Macintosh 上可用。 (Macintosh:苹果系统)

E.g. Dir读取文件/文件夹/遍历文件并把文件名导入EXCEL

Sub test()
Dim sname As String
Dim m As Integer

sname = Dir("C:\Users\lenovo\Desktop\VBA test\000\")
Debug.Print sname   '在立即窗口中显示结果,立即窗口在代码界面:视图→立即窗口 设置
m = 1
Do Until sname = ""
    Sheet1.Cells(m, 1) = sname
    m = m + 1
    sname = Dir     '循环语句中,Dir不需要重新定义。
Loop
End Sub

2. 通配符

(1)星号(*):表示任意多个字符(可以为0个)
(2)问号(?):表示任意一个字符(必须为1个)
(3)井号(#):表示任意一个数字(必须为1个)
(4)感叹号(!):逻辑非,表示不是,如[!0-9]表示非该范围的数字
(5)方括号([]):表示一个范围,如[A-Z a-z]表示全部字母,如果是多个选择区间中间用“,”隔开,如[A-D, H-N]

3. Like运算符

Like比较两个字符串,返回逻辑值,比较的字符串区分大小写,一般与通配符结合使用。

E.g. 

Sub test()
Dim sname As String
Dim m As Integer
sname = Dir("C:\Users\lenovo\Desktop\VBA test\000\")
Debug.Print sname
m = 1
Do Until sname = ""
    If sname Like "*.dwg" Then ' 用Like判断sname是否是.dwg格式文件,然后进行运算,*:多个字符。
        Sheet1.Cells(m, 1) = sname
    End If
    m = m + 1
    sname = Dir
Loop
End Sub

4. Instr函数

返回一个 **Variant **(Long) 值,指定一个字符串在另一个字符串中首次出现的位置。

InStr([ start ], string1, string2, [ compare ])

InStr 函数语法有以下参数

语法
Part说明
start可选。 设置每次搜索的起始位置的数字表达式。 如果忽略,则搜索从第一个字符位置开始。 如果 start 包含 Null,则出现错误。 如果指定了 compare,则 start 参数是必需的。
string1必需。 要搜索的字符串表达式
string2必需。 搜索到的字符串表达式。
compare可选。 指定字符串比较的类型。 如果 compare 为 Null,则将发生错误。 如果省略 compare,则 Option Compare 设置将决定比较的类型。 指定有效的 LCID (LocaleID) 以在比较中使用区域设置特定规则。(具体见office帮助文件)

设置

compare 参数设置如下。

设置
常量说明
vbUseCompareOption-1使用 Option Compare 语句的设置执行比较。
vbBinaryCompare0区分大小写。
vbTextCompare1不区分大小写。
vbDatabaseCompare2仅用于 Microsoft Access。 根据数据库中的信息执行比较。

返回值

返回值
IfInStr 返回
string1 是零长度0
string1 为 NullNULL
string2 是零长度start
string2 为 NullNULL
未找到 string20
在 string1 中找到 string2找到匹配的位置
start > string20

注释

InStrB 函数适用于包含在字符串中的字节数据。 InStrB 返回某字符串在其他字符串中首次出现的字节位置,而不返回其字符位置。

 

 

待解决问题:(1) Dir函数attribute为vbDirectory,返回值“.” 而不是空字符串?

(2) 调用自定义函数同时遍历文件夹and 文件。

 

参考资料:

1. 如何在vba中用dir函数遍历文件夹和文件?

2. Dir函数

3.InStr 函数

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值