我正在创建一个函数,该函数查找使用 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(文件路径),以便可以导入它们而没有重复项。
非常感谢您
编辑:我根据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
答案 0 :(得分:1)
我基于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