需要根据特定条件对文件夹中的所有文件进行排序,并返回最后一个文件名

时间:2014-05-14 20:09:42

标签: vb.net file vba sorting directory

我有一个在VB.net中工作的同事给我的vb.net代码,但它在VBA中不起作用。我在VBA文件中使用那段代码。有没有办法改变语法在VBA中工作,或从VBA或其他东西在VB.net中运行它。或者是否有完全不同的方式来实现这一切?我还没有运气试图更改代码或搜索答案。

    Sub UpdateTVGData()

    Dim vPath As String = GetPath("PR.G.ZMDPPL.TVG")

End Sub

Function GetPath(ByVal vFIle As String) As String
    Dim Path As String
    Dim files() As String = System.IO.Directory.GetFiles("\\sw100313\ZMD_Archives", vFIle + ".*", IO.SearchOption.AllDirectories)
    Dim sortcrit(files.Length - 1) As Integer
    Dim i As Integer
    For i = 0 To files.Length - 1
        sortcrit(i) = Val(Mid(files(i), Len(files(i)) - 6, 4))
    Next i
    System.Array.Sort(sortcrit, files)
    Path = files(files.Length - 1)
    Path = Left(Path, 35)
    'clean up
    files = Nothing
    sortcrit = Nothing

    Return Path
End Function

1 个答案:

答案 0 :(得分:0)

我尝试使用Dir()函数根据我在此处看到的其他帖子选择正确的文件夹,但我得到了#34;"对于第一次迭代的foldnm值。如果我使用shell和相同的文件路径,我可以打开文件夹,所以我不认为路径是问题。

Sub get_file()

File_pth = "explorer.exe \\sw100313.w10\ZMD_Archives"
ctr = 1
max_folder_val = 0

foldnm = Dir(File_pth, vbDirectory)
Do While foldnm <> ""
Mid(fileName, Len(fileName)-6, 4)
ctr = ctr + 1
foldnm = Dir()
If Mid(foldnm, Len(foldnm)-6, 4) > max_folder_val Then
max_folder = foldnm
max_folder_val= Mid(foldnm, Len(foldnm)-6, 4)
End If
Loop

End Sub