В настоящее время у меня есть код, который перебирает папку и файлы внутри папки, чтобы «получить данные» (не важно) в таблицу Excel
, но каждый раз, когда я запускаю код, он должен будет go через всю папку, и, скажем, если у меня есть 300 файлов, он будет go через все 300 файлов, чтобы "получить данные", даже если данные уже существуют в листе Excel, поэтому это занимает очень много времени.
Я хотел бы отсканировать столбец «E» (содержит имена файлов) на моем листе Excel с именем «Main», а затем добавить его в словарь, а затем после этой проверки на новое имя файла, например, EG, если первый запуск сохранен 60 имен файлов в словарь, если во втором прогоне есть новые файлы, добавьте его в словарь, затем «получите данные», если нет новых файлов, просто оставьте его.
Любая помощь будет высоко оценена. Огромное спасибо.
Мне удалось найти здесь этот код, который, кажется, должен использоваться, но я понятия не имею, как я могу настроить его под свои нужды,
Sub DictionaryGroupData(rngInput As Range, keyColIndex As Long, blHeaders As Boolean)
'Must add reference to Tools > References > Microsoft Scripting Runtime
Dim i As Long
Dim rngCell As Range, rng As Range, rngTemp As Range
Dim dict As Scripting.Dictionary
Dim strVal As String
Dim varOrigItems As Variant, varUniqueItems As Variant, varKey As Variant, _
varItem As Variant
Application.ScreenUpdating = False
Set rng = rngInput.Columns(keyColIndex)
Set dict = New Scripting.Dictionary
' set compare mode to text
dict.CompareMode = TextCompare
' offset by one row if range has headers
If blHeaders Then
With rngInput
Set rngInput = .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count)
End With
End If
' add keys and values to dictionary
With rngInput
For Each rngCell In rngInput.Columns(keyColIndex).Cells
i = i + 1
strVal = rngCell.Text
' add new key and item range
If Not dict.Exists(strVal) Then
dict.Add strVal, .Rows(i)
' merge item ranges of existing key
Else
Set rngTemp = Union(.Rows(i), dict(strVal))
dict.Remove strVal ' simply updating the item in a loop will cause a run-time error!
dict.Add strVal, rngTemp
End If
Next rngCell
End With
For Each varKey In dict.Keys
' *********************************************
'Insert your code here
' *********************************************
Debug.Print varKey & ": " & dict.Item(varKey).Address ' remove in production
Next varKey
' *********************************************
' or add code here for specific key actions
' dict("A").Select
' *********************************************
Application.ScreenUpdating = True
End Sub