Этому можно подойти многому, как с любой проблемой, я думаю!
Вы можете разбить проблему на две подпрограммы:
1) Получить все имена файлов в выбранной директории и отображать данные первого файла
2) Если это не последний файл, получить следующие данные файла и отобразите его
Вы можете использовать глобальную переменную для хранения имен файлов и индекса, чтобы помнить, где вы находитесь, в коллекции имен файлов.
Global filenames As Collection
Global fileIndex As Integer
Public Sub GetFilenames()
Dim selectedDirectory As String
Dim currentFile As String
selectedDirectory = "selected\directory\"
currentFile = Dir$(selectedDirectory)
Set filenames = New Collection
While currentFile <> ""
filenames.Add selectedDirectory & currentFile
currentFile = Dir$()
Wend
' Make sure there were files
If filenames.Count >= 1 Then
fileIndex = 1
' Call a method to display data
DisplayData(filenames(fileIndex))
Else
' No files
End If
End Sub
Public Sub GetNextFile()
' Make sure we have a filenames object
If Not filenames Is Nothing Then
If fileIndex < filenames.Count Then
fileIndex = fileIndex + 1
' Call the display method again
DisplayData(filenames(fileIndex))
Else
' Decide what to do after reaching the final file
End If
Else
' No filenames
End If
End Sub
я не включил процедуру DisplayData, как я не уверен, какой тип файлов вы захвата или то, что вы делаете с ними, но если бы сказать Excel файлы это может быть что-то вроде:
Public Function DisplayData(filename As String)
Dim displayWb As Workbook
Set displayWb = Workbooks.Open(filename)
' Do things with displayWb
End Function
Вы можете установить макрос кнопки на «GetNextFile», и он будет циклически перемещаться по файлам после каждого нажатия. Что касается времени жизни глобальных переменных, они только повторно инициализируются, когда проект VBA сбрасывается или когда они специально инициализируются посредством процедуры или непосредственного окна.
Может быть, вы могли бы написать в какой-то файл и повторно считывать значения в соответствующее время. –
Можете ли вы поделиться кодом, который у вас есть в настоящее время? –
Мой код слишком велик и включает в себя множество других действий, это только смущает всех. Удалось ли мне объяснить мою цель? – user429400