VBA,如何随机打开一个文件夹,假如有三个文件夹的话?

请讲解下,VBA,如何随机打开一个文件夹,假如有三个文件夹的话?
最新回答
天生小仙女

2024-11-05 14:29:10

'首先,调用DOS命令获得指定目前下所有文件夹名列表,代码如下:
Dim MyFold() as String '定义动态字符串数组
MyDir="D:\Test " '指定待处理的文件夹,可自行修改
shell "cmd.exe /c dir /B/ad "+MyDir+" > FoldList.txt" ,vbhide '本命令功能为获取指定目录MyDir下所有文件夹名列表,包括隐藏文件夹,但不包括子文件夹
'然后读取FoldList.txt中的数据,获取文件夹名的数量,代码如下:
Fn=0
Open MyDir+"\FoldList.txt" For input as #1
Do Until EOF(1)
Line Input #1, FL
Fn=Fn+1
Loop
Colse #1
ReDim MyFold(Fn-1) '重新定义数组
'然后,给数组赋值,代码如下:
i=0
Open MyDir+"\FoldList.txt" For input as #1
Do Until EOF(1)
Line Input #1, FL
MyFold(i)=MyDir+"\"+FL
i=i+1
Loop
Colse #1
Kill MyDir+"\FoldList.txt"
'然后是获取一个随机数,以随机打开指定的文件夹,代码如下:
i=int((Fn-1)*Rnd)
shell "Explorer.exe "+MyFold(i) '打开随机指定的文件夹

'如果待随机打开的文件夹不是处在同一父目录下,则只能人工给每一个数组元素单独赋值后随机打开了。
追问
这是VBA嘛?
追答
这不是VBA,难道是VAB?你的确太菜了!连基本知识都不懂,就上来问问题。其实VBA是VB的儿子,二者有时看着是一样的。
浅夏时光

2024-11-05 15:24:08

arr = Array("dir1", "dir2", "dir3")
Randomize
i = Int(Rnd * UBound(arr))
mydir = arr(i)
追问
("dir1", "dir2", "dir3")
地址直接写就可以啦?
追答
追问
这是VBA吧?代码写在啥地方啊,我很菜啊。