文章目录
Dir函数 获取文件名
-
重要提示: Dir函数查找文件的顺序在不同系统中各不相同,往往与我们看到的不一致
-
当DIR返回空字符串时,代表所有文件名都已经被找到,本次查找结束
-
写参数与不写参数的区别
-
若Dir判定的文件不存在,则直接返回空字符串(可以作文件是否存在的辅助判定)
-
Dir函数不会查找子文件夹中的文件和文件夹
- 如果需要处理,则需要使用递归
'搜寻文件和子文件夹的名字
'注意: 子文件夹包括"."和".."两个特殊的名字
'分别代表本目录(d:\demo\和其父目录"d:\")
f = dir("d:\demo\",vbDirectory)
Option Explicit
Sub dirTest()
Dim f As String
f = Dir("d:\")
Do While f <> ""
'在此处对名为f的文件进行打开和读取操作
Call readFromFile("d:\demo\" & f)
f = Dir
Loop
End Sub
' 读取文件名为fullName变量的文件
' 取出每行的城市名和电话号码,写入一张新建的工作表当中
Sub readFromFile(fullName As String)
Dim ws As Worksheet, i As Long, s As String
'创建工作表,并将表名改为文件名,InStrRev函数
'与 Instr函数功能相同,不过是从最右边开始查找字符
Set ws = Worksheets.add
ws.Name = Mid(fullName, InStrRev(fullName, "\") + 1)
Open fullName For Input As #1
i = 1
Do While Not EOF(1)
Line Input #1, s
ws.Cells(i, 2) = Left(s, 2)
ws.Cells(i, 3) = Mid(s, InStr(s, "电话") + 3, 8)
i = i + 1
Loop
Close #1
End Sub
Sub readFromFile(fullName As String)
Dim a As Workbook ,path As String,fileName as String
path = "d:\demo\workbooks\*.xlsx"
fileName = Dir(path)
i = 1
Do While fileName <> ""
set w = Workbooks.Open(path & fileName)
' 此处可以处理当前打开的w工作簿
w.close
fileName = Dir
Loop
Close #1
End Sub
递归算法简约不简单
深层次文件夹的处理