У меня есть рабочий код для извлечения определенной ячейки в закрытой книге, когда я указываю каталог. Я пытаюсь заставить этот код перебрать все существующие книги в указанном каталоге, извлекая одну и ту же ячейку из каждого файла.
Это код, который я до сих пор использовал в цикле (я также включаю используемую функцию):
Private Function GetValueFromClosedWorkbook(path, file, sheet, ref)
Dim arg As String, xFolder As String
If Right(path, 1) <> "\" Then path = path & "\"
If Dir(path & file) = "" Then
GetValueFromClosedWorkbook = "File not found."
Exit Function
End If
arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range(ref).Address(, , xlR1C1) 'create the argument
GetValueFromClosedWorkbook = ExecuteExcel4Macro(arg)
End Function
Sub TestGetValueFromClosedWorkbook()
Dim p As String, xFolder As String
Dim s As String, a As String, f(1 To 2) As String, z As Long
xFolder = "\\generic path"
For z = 1 To 2
s = "Sheet1"
a = "A1"
p = xFolder '& "\*.xlsx"
f(z) = Dir(p & "\*.xlsx")
Do While f(z) <> ""
ActiveSheet.Range("A" & (z + 7)) = GetValueFromClosedWorkbook(p, f(z), s, a)
f(z) = Dir()
Loop
Next z
End Sub
Получается правильная ячейка, а затем вставляется в активный лист в ячейке A8.
Единственная проблема заключается в том, что когда он проходит через второй файл, он все равно получает ячейку из первого файла. Почему это происходит? Или как я могу убедиться, что второй цикл извлекает ячейку из второй рабочей книги?