偶尔用到Excel中VBA处理一些事情,毕竟鄙人比较懒,总是喜欢把那些重复性的工作想方设法交给计算机来处理,那样才能证明自己的大脑还在运转着,总结一些VBA中读取解析本地文件目录的方法。
1 ‘ 该函数是获取指定目录下所有的 文件夹 名 2 Sub readFile() 3 Path = "d:\" 4 sonpath = Dir(Path, vbDirectory) 5 Do While sonpath <> "" 6 ‘ 跳过当前的目录及上层目录 7 If sonpath <> "." And s <> ".." Then 8 ‘ 使用位比较来确定MyName代表一目录 9 If (GetAttr(Path & sonpath) And vbDirectory) = vbDirectory Then 10 MsgBox sonpath ‘ 如果它是一个目录,打印名称 11 ‘ 然后就可以打开这些目录下的文件 12 End If 13 End If 14 sonpath = Dir ‘查找下一个目录 15 Loop 16 End Sub
1 ‘ 该函数为获取指定目录下所有文件名 2 ‘ 注释部分,如果加上,则不包括"."和".." 3 ‘ 否则获取的文件名包括上面列出的两个 4 Sub readFile1() 5 Path = "D:\video\" 6 sonpath = Dir(Path, vbDirectory) 7 Do While sonpath <> "" 8 ‘ If sonpath <> "." And sonpath <> ".." Then 9 MsgBox sonpath 10 ‘ End If 11 sonpath = Dir 12 Loop 13 End Sub
注解:
Path是指路径,其中"D:\video\"和"D:\video"是有区别的,前者可以解析到video的子目录,而后者只是解析video本身该层目录;
1 ‘ 读取文件内容,并将每行依次复制到A列 2 ‘ path为文件绝对地址,lineNum为行号 3 Function readFile2(path, lineNum) 4 ‘ 错误机制处理,可以去掉,如果有错误,会自动跳转到Error标签处执行 5 On Error GoTo Error 6 7 ‘ 打开文件,并以符号"1"来代替文件流 8 Open path For Input As #1 9 10 ‘ 判断文件流"1"是否读取到文件尾 11 Do While Not EOF(1) 12 13 ‘ 读取文件流"1"中的一行,并赋值给变量"a" 14 Line Input #1, a$ 15 ‘ 将变量"a"复制到指定单元格里 16 Range("A" + CStr(lineNum)).Value = a$ 17 ‘ 行号+1 18 lineNum = lineNum + 1 19 Loop 20 Close #1 21 Exit Function 22 Error: MsgBox Err.Description 23 Close #1 24 End Function
1 ‘ 读取指定目录下的所有txt文件,并将其内容拷贝到sheet1的A列中 2 Sub readTxts() 3 ‘ 父级路径设置,最后有"\",注意 4 path = "d:\data\data\" 5 ‘ 设置行号 6 lineNum = 1 7 8 ‘ 获取该目录下所有文件名(只放置txt格式文件,其他的格式尚未判断) 9 sonpath = Dir(path, vbDirectory) 10 Do While sonpath <> "" 11 If sonpath <> "." And sonpath <> ".." Then 12 MsgBox "正在读取" + sonpath 13 14 ‘ 调用读取文件的函数(txt文件绝对路径,行号) 15 result = readFile2(path + sonpath, lineNum) 16 End If 17 sonpath = Dir 18 Loop 19 End Sub
以上两个函数是用来读取本地文本文件,将文本中的数据读取到Excel表格中
时间: 2024-10-06 22:24:06