Доброе утро / День / Вечер,
Я хотел бы получить некоторую справку по синтаксису для следующего кода или указать мне направление, которое делает это лучше, поскольку есть некоторые вещи, которые не совсем верны.
У меня изначально был список файлов в макросе папки, и я адаптировал его, чтобы попытаться сделать то, что я хочу.
Итак, у меня есть список имен стволовых файлов (strDesignDocs) и у меня есть верхняя папка, в которой я найду версию этих файлов (combobox21.value).
Я передаю путь к верхней папке и имя файла детали в функцию ListMyFiles, надеясь, что это только для целей тестирования.он даст мне сообщение с полным именем файла, который был найден, а также полный путь к папке.он печатает сообщение внутри функции, но хотел бы, чтобы оно передало его обратно вызывающей функции, чтобы в конечном итоге сделать что-то еще.
С приведенным ниже кодом:
- кажется, что он не выходит из функции после того, как файл найден (просто кажется, что он перемещается в следующую папку, по-прежнему ищатот же файл, не выходящий за пределы всей функции)
- Он не возвращает значение обратно вызывающей функции, возможно потому, что он продолжает функцию выхода, которую я до сих пор не могу исправить.
- Кажется, он никогда не возвращается к вызывающей функции, но все еще пытается обработать все файлы, поэтому можно только предположить, что он это делает.
TYIA
Andy
Dim iRow
Dim Counter
Dim myFile As Scripting.File
Sub ListFiles()
Dim WS1, WS2 As Worksheet
Dim strDesignDocs As Variant
On Error Resume Next
Set WS1 = Sheets("Data")
Set WS2 = Sheets("Clean_Up")
With WS1
Set strDesignDocs = .Range(.Cells(15, 1), .Cells(27, 1))
End With
For Each cell In strDesignDocs
strReturnValue = ListMyFiles(ComboBox21.Value, True, cell.Value)
Debug.Print strReturnValue
Next
End Sub
Function ListMyFiles(mySourcePath, IncludeSubfolders, sFileName)
Dim MyObject As Scripting.FileSystemObject
On Error Resume Next
Set MyObject = New Scripting.FileSystemObject
Set mySource = MyObject.GetFolder(mySourcePath)
For Each myFile In mySource.Files
If InStr(1, myFile.Name, sFileName) <> 0 Then
strReport = myFile.Name & " in " & myFile.Path
ListMyFiles = strReport
'Debug.Print strReport
Exit Function
End If
Next
If IncludeSubfolders Then
For Each mySubFolder In mySource.SubFolders
Call ListMyFiles(mySubFolder.Path, True, sFileName)
Next
End If
End Function