У меня есть файл Excel со списком кодов в столбце 1, относящихся к различным рабочим книгам.
Сначала я создал код, который будет циклически проходить по кодам, и я бы вручную открыл конкретную книгу, используя «Application.GetOpenFilename».
Теперь я решил сделать его более эффективным, и, поскольку путь к файлу не меняется, я решил создать глобальную общедоступную переменную с расположением пути к файлу.
Я создаю словарь, который добавляет все коды. (То есть цикл между 2 и 50). Значение в каждой строке ячеек (i, 1) содержит сокращенный код, который затем привязывается к общедоступной переменной с полным путем / местоположением файла. В этом случае все коды в строках со 2 по 50 - это ABC123 (ключ = ABC123). В других случаях у меня есть несколько кодов, поэтому я добавляю в словарь, чтобы сохранить уникальные значения, и затем могу открыть эти отдельные файлы.
Я надеялся пройтись по словарю, чтобы открыть определенные файлы, связанные с кодом, вместо этого он попытался открыть строковое значение, а не путь к файлу. ABC123.xls вместо C: \ Users \ xxxx \ xxxx \ ImportantFile2018.xls
Я пытаюсь понять, как получить ключ словаря равным общедоступной переменной, которую я назначил с тем же именем.
Не зацикливайтесь на именах переменных, это всего лишь примеры. Основная проблема заключается в том, как извлечь значение переменной (путь к файлу), когда имя переменной (ABC123) соответствует значению ячейки. Каждое значение ячейки в столбце 1 данных имеет соответствующую переменную с путем к файлу.
Option Explicit
Public ABC123 As String
Sub DefinedVariables()
ABC123 = C:\Users\xxxx\xxxx\ImportantFile2018.xls
End Sub
Sub Reporting_Update()
Dim dictClient As New Scripting.Dictionary
Dim key As Variant
Call DefinedVariables
For i = 2 To 50
If dictClient.Exists(Cells(i, 1).Value) Then
Else:
dictClient.Add Cells(i, 1).Value
End If
Next
For Each key In dictClient
Workbooks.Open FileName:=key