2015-05-22 3 views
-1

Я пытаюсь найти способ с использованием Access 2003 (да, я знаю, это древний), для поиска всех подкаталогов папки, чтобы определить, существует ли файл. Если он найден, его нужно ввести в суб, который включает или выключает кнопку. Я также хотел бы сохранить путь, поскольку мне понадобится эта кнопка для ссылки на файл. Итак, в качестве краткого объяснения, используя Access, я хотел бы найти в папке диск, у которого есть подпапки, каждая из которых имеет свои собственные подпапки. Я нашел много веб-сайтов, включая следующий, но ни один из ответов не работает. Loop Through All Subfolders Using VBAVBA поиск вложенных папок папки

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

+0

Добро пожаловать в SO! Чтение [как задать хороший вопрос] (http://stackoverflow.com/help/how-to-ask) поможет вам быстрее ответить. Помните, что это не служба написания кода, поэтому опубликуйте, что у вас есть, и кто-то остановится, чтобы помочь вам исправить это. – FreeMan

+0

Подсказка для вашего дальнейшего поиска - FSO (filesystemobject) – KKowalczyk

+0

Вопрос, на который вы ссылаетесь, имеет хорошие ответы, поэтому, возможно, объясните, почему вы говорите, что они не работают для вас. Если вы попытались адаптировать код, то * отправьте код, который вы пробовали * –

ответ

0

`Dim FileSystem как объект дим HostFolder As String

HostFolder = "C: \"

Набор FileSystem = CreateObject ("Scripting.FileSystemObject") DoFolder FileSystem.GetFolder (HostFolder)

Sub DoFolder (Папка) Dim пОДПАПКА Для каждой подпапки В Folder.SubFolders DoFolder пОДПАПКА Следующая Dim File Для каждого файла в папке. Файлы «Работайте над каждым файлом Next End Sub` Дает мне неправильную процедуру и говорит, что ошибка находится в папке хоста, которую я использовал. Тем не менее, это тот же, который я использовал для других моих образцов кода без проблем.

Public Sub NonRecursiveMethod() 
    Dim fso, oFolder, oSubfolder, oFile, queue As Collection 

    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set queue = New Collection 
    queue.Add fso.GetFolder("your folder path variable") 'obviously replace 

    Do While queue.Count > 0 
     Set oFolder = queue(1) 
     queue.Remove 1 'dequeue 
     '...insert any folder processing code here... 
     For Each oSubfolder In oFolder.SubFolders 
      queue.Add oSubfolder 'enqueue 
     Next oSubfolder 
     For Each oFile In oFolder.Files 
      '...insert any file processing code here... 
     Next oFile 
    Loop 

End Sub 

Дает мне ошибку, потому что последний следующий не находится в цикле for в соответствии с Access VBA. Я нашел еще один код, который мне удалось получить. Это с сайта http://www.ammara.com/access_image_faq/recursive_folder_search.html Однако это очень медленно. Выполняется еще 30 секунд, когда все было в одной папке, простая проверка dir будет мгновенной. Спасибо тем, кто предложил какую-то помощь.

 Смежные вопросы

  • Нет связанных вопросов^_^