Найдите папки в каталоге, который содержит имя папки как US- и IS-vba.

Несколько дней я искал код vba или vbs, чтобы перечислить все папки, содержащие US- или IS- в определенном каталоге. Пока у меня есть приведенный ниже код, в котором перечислены все документы, но не имена папок.

    'Force the explicit declaration of variables
Option Explicit
Sub Get_File_Name()
Dim objFSO As Object
Dim SearchString As String
Dim TestPos As Integer

Dim objFolder As Object
Dim objSubFolder As Object
Dim i As Integer
'Create an instance of the FileSystemObject
Set objFSO = CreateObject("Scripting.FileSystemObject")
'Get the folder object
Set objFolder = objFSO.GetFolder("C:\Working Documents\Client\OPTICS\")
i = 1
For Each objSubFolder In objFolder.SubFolders
If InStr(1, objSubFolder.Name, "US-", vbTextCompare) > 0 Or InStr(1, objSubFolder.Name, "IS-", vbTextCompare) > 0 Then
    'print folder name
    Cells(i + 1, 1) = objSubFolder.Name
    'print folder path
    Cells(i + 1, 2) = objSubFolder.Path
    i = i + 1
Else
End If
Next objSubFolder
End Sub

Любая помощь очень ценится.


person Ajit Kumar Jena    schedule 10.05.2016    source источник


Ответы (1)


используйте простой InStr() внутри Для каждого цикла, чтобы проверить, содержит ли имя файла US- или IS-:

If InStr(1, objSubFolder.Name, "US-", vbTextCompare) > 0 Or InStr(1, objSubFolder.Name, "IS-", vbTextCompare) > 0
person gizlmo    schedule 10.05.2016
comment
Привет. Спасибо за вашу помощь... Я не уверен, почему код дает мне ошибку времени выполнения. - person Ajit Kumar Jena; 10.05.2016
comment
Что именно дает вам какую ошибку? Я скопировал ваш код и запустил его без проблем - person gizlmo; 10.05.2016
comment
i = 1 для каждой objSubFolder в objFolder.SubFolders If InStr(1, objSubFolder.Name, US-, vbTextCompare) › 0 Or InStr(1, objSubFolder.Name, IS-, vbTextCompare) › 0 Then 'напечатать имя папки Cells(i + 1, 1) = objSubFolder.Name 'вывести путь к папке Cells(i + 1, 2) = objSubFolder.Path i = i + 1 Else End If - person Ajit Kumar Jena; 10.05.2016
comment
Я думаю, что делаю какую-то ошибку... извините, я только на первом уровне. Я скопировал ваш код и вставил его после кода {For Each objSubFolder In objFolder.SubFolders} с if и endif. - person Ajit Kumar Jena; 10.05.2016
comment
И какую ошибку он у вас выдает? ваш код работал раньше? - person gizlmo; 10.05.2016
comment
Он не извлекает имена папок... он просто выбирает все имена файлов. - person Ajit Kumar Jena; 10.05.2016
comment
Я попробовал это, и это показывает мне только папки, файлы игнорируются - person gizlmo; 10.05.2016
comment
Я отредактировал исходный код выше с кодом и добавил код, который вы мне дали. Извините, что беспокою вас комментариями, спасибо за вашу помощь. - person Ajit Kumar Jena; 10.05.2016
comment
Я до сих пор не понимаю, почему он перечисляет файлы для вас, я скопировал ваш код 1: 1, и он дает мне только папки, содержащие US- или IS- - person gizlmo; 10.05.2016