永发信息网

在VBA中用DIR函数遍历子文件夹出错

答案:3  悬赏:30  手机版
解决时间 2021-12-01 07:07
在VBA中用DIR函数遍历子文件夹出错
最佳答案
因为你遍历子文件夹时调用带参数的Dir(folder, vbDirectory),
子文件夹遍历结束后,再调用Dir默认的路径仍然是子文件夹,已经遍历完了,所以出错。
建议使用下面方法:
Sub test002(folderspec)
Dim fs, f, f1, sf, fc
Dim mypath As String, fn As String
Dim i As Long, lmyRow As Long

On Error Resume Next
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(folderspec)
Set sf = f.SubFolders
Set fc = f.Files

For Each f1 In sf
fn = f1.Name
mypath = folderspec & fn & "\"
ShowFolderList mypath
Next
For Each f1 In fc
fn = f1.Name
Next
End Sub
全部回答
图片弹出的意思是:无效的过程调用。
dir是vba内置函数,需要参数运行。
遇到过同样的问题, 稍微修改了一下可以遍历了。

Sub test002(folder As String)
If Right(folder, 1) <> "\" Then
folder = folder & "\"
End If

anyfsubfolder = Dir(folder, vbDirectory)
Do
Select Case anyfsubfolder
Case ""
Exit Do
Case "."
Case ".."
Case Else
If GetAttr(folder & anyfsubfolder) And vbDirectory Then
'MsgBox folder & anyfsubfolder
Call test002(folder & anyfsubfolder)
End If
End Select
'加上以下代码, 还原Dir函数运行环境
subfoldervisited = Dir(folder, vbDirectory)
Do While subfoldervisited <> anyfsubfolder
subfoldervisited = Dir
Loop
'Dir已恢复至递归调用前
anyfsubfolder = Dir
Loop
End Sub
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
节目听着听着突然就没有了是怎么会事?
求助,从日本仙台怎么去大阪
那些有你字的儿童歌曲
螃蟹怎么清洗?会不会被蟹钳夹着?
受阻酚类抗氧剂AO-80在哪里可以买到?
铃木王gs125摩托车化油器在哪
中通快递徐州到长沙昨天18时出发明天能到手吗
有会CAD的吗,给个联系方式吧!
为什么连两年的时间都不给我呢?
给宝宝挑玩具有什么需要注意的么?
铁板烧英文为什么叫teppanyaki
Turboc编写好的程序怎样改变保存路径!(改变
一加手机和小米4,哪个好
蒙自市上海路南延线(红河职教园区内)怎么走
填空题若抛物线y2=2px(p>0)的焦点也是双曲
推荐资讯
有没有大佬帮忙炫龙kp2我重装系统以后
帮忙看下题,后面忘怎么做了
卤汤保持热着会不会变味
单选题毛泽东说:“代表先进阶级的正确思想,
一般狗狗打完狂犬疫苗针后多久才可以洗澡?
管宁割席华捉而掷去之。华歆的心里活动
《克雷洛夫寓言》中有一个马和骑师的故事,讲
K 66次火车经过哪些站点
开胯拉伤,两脚相对压胯的时候比以前还要高,
如果你在追一个女生,她果断拒绝你,是很讨厌
“蹒跚学步”的意思是什么?
一个制造业公司,由于新创业公司?一般来都有
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?