У меня есть код, который считывает все файлы в папке, вставляет имена файлов в рабочий лист и выводит количество файлов в поле сообщения.Сортировка файлов в папке с использованием VBA
Проблема: по какой-то причине, когда я запускаю код, он может получить файлы в неправильном порядке, что прерывает мои вычисления (что я делаю с другим подкомпонентом).
Вопрос: Есть ли способ гарантировать, что файлы всегда будут в правильном порядке?
Что я сделал до сих пор: Перед тем, как код выдаст имена файлов, я хотел бы использовать некоторый код для сортировки файлов в папке в определенном порядке, но я не могу найти никаких ссылок на то, как это сделать ,
Код:
Sub Counter()
Dim path As String, count As Integer, i As Long, var As Integer
Dim ws As Worksheet
Dim Filename As String
Dim FileTypeUserForm As UserForm
Dim x As String
Application.Calculation = xlCalculationManual
path = ThisWorkbook.path & "\*.*"
Filename = Dir(path)
ThisWorkbook.Sheets("FILES").Range("A:A").ClearContents
x = GetValue
If x = "EndProcess" Then Exit Sub
Set ws = ThisWorkbook.Sheets("FILES")
i = 0
Do While Filename <> ""
var = InStr(Filename, x)
If var <> 0 Then
i = i + 1
ws.Cells(i + 1, 1) = Filename
Filename = Dir()
Else: Filename = Dir()
End If
Loop
Application.Calculation = xlCalculationAutomatic
ws.Cells(1, 2) = i
MsgBox i & " : files found in folder"
End Sub
Function GetValue()
With FileTypeUserForm
.Show
GetValue = .Tag
End With
Unload FileTypeUserForm
End Function
Вы можете сохранить результаты Dir() в массиве, сортировать этот массив в новый и затем использовать этот массив. – R3uK
@ R3uK Как я могу это сделать? Если я просто использую Dir (path), это не просто даст мне место, а не содержимое? И в этом случае, если у меня есть массив, как я могу получить к нему доступ с моим текущим кодом (который просто использует строку)? – DGMS89