Я создаю функцию, которая находит дубликаты файлов, выбранных с помощью FileDialog , вот что я сделал:
Поскольку Collection FileDialogSelectedItems доступен только для чтения, япоиск функции, чтобы получить хеш и преобразовать коллекцию в Array
Dim FilesArray(), ArraySHA(), FilteredArray() as String
set fdg = Application.FileDialog(3)
With fdg
.....
If .show = -1 then
ReDim ArraySHA(fdg.SelectedItems.Count)
For i = 1 to fdg.SelectedItems.Count
ArraySHA(i) = FileToSHA256(fdg.SelectedItems.Item(i)) '' New array with hashes
Next i
Затем я использовал другую функцию для фильтрации дубликатов в ArraySHA
FilteredArray = FilterWords(ArraySHA)
Теперь у меня есть массив с уникальными хэшами, но мне нужно иметь selectedItems (filepaths), чтобы я мог импортировать их без дубликатов.
Большое спасибо
Редактировать : я создал словарь на основе коллекции SelectedItems, добавляя каждый элемент, только если его там еще нет
For i = 1 To fdg.SelectedItems.Count
SHA = FileToSHA256(fdg.SelectedItems.Item(i))
If Not dict.Exists(SHA) Then
dict.Add SHA, fdg.SelectedItems.Item(i)
End if
Next i
Теперь у меня есть хэши, которые соответствуют только одному файлу, который является его ключомзначение
For Each key In dict.keys
UniqueValue = dict(key)
'
'do something with each unique value (which is the filepath)
'
Next key