find最后一个空单元格,并用一个函数完成它

我做了一个程序来列出Excel文件夹中的“fld”文件夹的path,但我不知道如何search每一个最后一行,并完成列表文件的function。 然后添加新的文件,并保持旧的。 这是vba:

Sub test() Dim fso As FileSystemObject Dim oSourceFolder As Scripting.Folder Dim oSubFolder As Scripting.Folder Dim oFile As Scripting.File Dim oFolder As Scripting.Folder Dim strFolderName As String Dim i As Long Set fso = CreateObject("Scripting.FileSystemObject") Cells(1, 1).Value = "fld" strFolderName= "C:\Users\fld" i = 2 Range("A2").Select ActiveCell = Range("A2") Set oSourceFolder = fso.GetFolder(strFolderName) For Each oFolder In oSourceFolder.SubFolders For Each oFile In oFolder.Files Cells(i, 1).Value = Left(oFile.ParentFolder) i = i + 1 Next oFile Next oFolder 

excel表单是:

 C:\Users\fld\file1 C:\Users\fld\file2 C:\Users\fld\file3 

这个程序每次重复它自己,并重写Excel表单上的path。 否则,我只想search最后一行并写入刚添加的path文件夹。

例如,如果我添加C:\ Users \ fld \ file4,它会自动添加到单元格的末尾。

更快的方式做这个没有循环:

 Sub ListFiles() Dim files As Variant files = Filter(Split(CreateObject("WScript.Shell").Exec("CMD /C DIR ""C:\Users\fld\*.*"" /S /B /A:-D").StdOut.ReadAll, vbCrLf), vbCrLf), ".") Range("A2").Resize(UBound(files) + 1).Value = WorksheetFunction.Transpose(files) End Sub 

您可能会看到命令提示符(黑匣子)显示几秒钟,这是正常的。 它使用CMD.exe中的DIR命令从所有子文件夹获取文件列表,将输出parsing为数组,然后将数组直接转换到工作表中。