У меня есть код, который просматривает папки в каталоге для конкретных файлов Excel на основе метаданных этого файла. Из-за количества папок и файлов в каталоге код выполняется долго до завершения. Я добавил клавишу отмены, чтобы я мог отменить макрос. Код также записывает последний путь, над которым он работал, в лист 1 рабочей книги.
То, что я хочу сделать, - это проверить код, есть ли какое-либо значение на листе 1, где у меня сохранен путь, и обновить путь к подпапке, чтобы, если я отменил макрос, я мог позже вернуться и запустить где я остановился. Однако, когда я пытаюсь переназначить параметр .Path, я получаю ошибку «Переменная объекта или переменная блока не установлена», поэтому я предполагаю, что это невозможно сделать таким образом.
Мой код ниже:
Path = "C:\Users\blahblah\"
destination = "C:\Users\blahblah\blibbityblah\"
Set FSO = CreateObject("Scripting.filesystemobject")
Set obj_folder = FSO.GetFolder(Path)
On Error GoTo handleCancel
Application.EnableCancelKey = xlErrorHandler
MsgBox "This may take a long time: press ESC to cancel"
For x = 1 To 1000000
If Not ThisWorkbook.Sheets(1).Cells(1, 1).Value = "" Then
obj_subfolder.Path = ThisWorkbook.Sheets(1).Cells(1, 1).Value
ThisWorkbook.Sheets(1).Cells(1, 1).ClearContents
End If
For Each obj_subfolder In obj_folder.SubFolders
For Each file In obj_subfolder.FILES
Set oDetails = GetDetails(file.Path)
If InStr(1, oDetails("Tags"), "EDGE") Then
Call FSO.CopyFile(file.Path, FSO.BuildPath(destination, file.Name))0
End If
Next file
Next obj_subfolder
Next x
handleCancel:
If Err = 18 Then
MsgBox "You cancelled"
ThisWorkbook.Sheets(1).Cells(1, 1).Value = obj_subfolder.Path
End If
End Sub
Блок кода, который я пытаюсь реализовать, но который выдает ошибку, приведен ниже:
If Not ThisWorkbook.Sheets(1).Cells(1, 1).Value = "" Then
obj_subfolder.Path = ThisWorkbook.Sheets(1).Cells(1, 1).Value
ThisWorkbook.Sheets(1).Cells(1, 1).ClearContents
End If
Если на листе есть значение в A1, я хочу изменить путь к этой подпапке, чтобы отразить то, что находится в A1, только один раз. Но я хочу, чтобы он оставался в цикле, чтобы код не пытался вернуться назад и просмотреть папки, через которые я уже прошел.