|
本帖最后由 hfwufanhf2006 于 2020-4-3 09:00 编辑
我给你我个人经常使用的文件检索函数,代码没几行:
Function GetFilesList(myPath As String) '获得当前路径的全部文件,不区分文件类型
Dim myArr()
myJs = 0
Set myFolder = CreateObject("Scripting.FileSystemObject").GetFolder(myPath)
For Each mySubfile In myFolder.Files
myJs = myJs + 1
ReDim Preserve myArr(1 To myJs)
myArr(UBound(myArr)) = mySubfile.Name
Next
GetFilesList = myArr
End Function
说明:
myPath:路径
上面的函数会获得指定目录下的全部文件,不分文件类型,结果以一维数组的形式返回;
要引用这个函数,类似下面的简单定义就可以:
dim arr()
dim Path as string
Path="e\gz"
arr=GetfilesList(Path)
至于要达到你说的排列要求,则需要你的排列算法了;
我看你的排列规则,直接检索或者字典应该都可以,通常文件列表的数据量不大,直接检索结构上更简单,也不会影响速度(没实测):
range("b2:b10000").clearcontents
for i=1 to ubound(arr)
for k=2 to [a10000].end(3).row '假设数据从第2行开始,第一行通常是标题
if instr(arr(i),cells(i,1))>0 then
cells(k,2)=iif(isempty(cells(k,2)),arr(i),cells(k,2) & "," & arr(i))
endif
next k
next i
上面的代码理论上会按照a列的姓名定义,在b列中把文件列表对应分开排列,每个文件中用",”来分隔;
如果没有对应姓名的文件,那么b列应该就是空白,而不是文字定义“没找到”,如果你喜欢这个文字定义,需要再检索一遍b列清单,把所有的空行转换成文字“没找到”,我个人认为没这个必要;
|
|