Хранить имена папок в массиве и сортировать по алфавиту VBA - PullRequest
1 голос
/ 13 января 2020

У меня есть следующий код, который предназначен для извлечения каждого имени файла по указанному пути c и помещения его в массив. По какой-то причине, хотя файлы в проводнике сортируются по алфавиту, код выводит их из строя. Мой подход заключается в том, чтобы сначала сохранить имена файлов в массив, а затем отсортировать массив. Есть ли лучший способ приблизиться к этому?

Кроме того, по какой-то причине строка с Debug.Print arr1 (i) печатает только пробелы в непосредственном окне. Пожалуйста, сообщите.

Dim arr1(1000) As String, item As Variant
Dim x As Long, y As Long, k As Integer
Dim TempTxt1 As String
Dim TempTxt2 As String
Dim FolderPath As String, path As String, count As Integer
Dim size As Integer, i As Integer

Set oFSO = CreateObject("Scripting.FileSystemObject")

Set oFolder = oFSO.GetFolder("X:\test\testfolder")

For Each oFile In oFolder.Files

    arr1(i) = Left(oFile.Name, Application.WorksheetFunction.Find(".", oFile.Name) - 1)

    i = i + 1

    Debug.Print arr1(i)

Next oFile


'Alphabetize Sheet Names in Array List
  For x = LBound(arr1) To UBound(arr1)
    For y = x To UBound(arr1)
      If UCase(arr1(y)) < UCase(arr1(x)) Then
        TempTxt1 = arr1(x)
        TempTxt2 = arr1(y)
        arr1(x) = TempTxt2
        arr1(y) = TempTxt1
      End If
     Next y
  Next x

введите код здесь

1 Ответ

2 голосов
/ 13 января 2020

Итак, согласно моему комментарию; Я думаю, что вы могли бы извлечь выгоду из использования ArrayList и его способности Sort. Попробуйте:

Sub Test()

Dim oFSO As Object, oFolder As Object, arr As Object

Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder("X:\test\testfolder")
Set arr = CreateObject("System.Collections.ArrayList")

For Each oFile In oFolder.Files
    arr.Add oFSO.GetBaseName(oFile)
Next oFile

arr.Sort

End Sub

Поскольку вы вводите имена один за другим, мы могли бы сделать это в ArrayList. Метод .Sort затем отсортирует список в порядке возрастания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...