Список файлов в папке

Список файлов в папке

Иногда бывает необходимо заполучить на лист Excel список файлов в заданной папке и ее подпапках. В моей практике такое встречалось неоднократно, например:

  • перечислить в приложении к договору на проведение тренинга список файлов из раздаточных материалов для особо щепетильных юристов в некоторых компаниях
  • создать список файлов для ТЗ проекта
  • сравнить содержимое папок (оригинал и бэкап, например)

Для реализации подобной задачи можно использовать несколько способов.

Способ 1. Скелет из шкафа — функция ФАЙЛЫ

Этот способ использует древнюю функцию ФАЙЛЫ (FILES) , оставшуюся в Microsoft Excel с далеких девяностых. Вы не найдете эту функцию в общем списке функций, но для совместимости, она всё ещё остаётся внутри движка Excel, и мы вполне можем её использовать.

1. В любую ячейку листа (например, в А1) введём путь к папке, список файлов из которой мы хотим получить.

Обратите внимание, что путь должен оканчиваться шаблоном со звездочками:

  • *.* — любые файлы
  • *.xlsx — книги Excel (только с расширением xlsx)
  • *.xl* — любые файлы Excel
  • *отчет* — файлы, содержащие слово отчет в названии

2. Создадим именованный диапазон с помощью вкладки Формулы — далее кнопка Диспетчер имен — Создать (Formulas — Names Manger — Create) . В открывшемся окне введем любое имя без пробелов (например Мои_файлы) и в поле диапазона выражение:

После нажатия на ОК будет создан именованный диапазон с именем Мои_файлы, где хранится список всех файлов из указанной в А1 папки. Останется их оттуда только извлечь.

3. Чтобы извлечь имена отдельных файлов из созданной переменной, используем функцию ИНДЕКС (INDEX) , которая в Excel вытаскивает данные из массива по их номеру:

Если лениво делать отдельный столбец с нумерацией, то можно воспользоваться костылем в виде функции СТРОКИ (ROWS) , которая будет подсчитывать количество заполненных строк с начала списка автоматически:

Ну, и скрыть ошибки #ССЫЛКА! в конце списка (если вы протягиваете формулу с запасом) можно стандартной функцией ЕСЛИОШИБКА (IFERROR) :

Важное примечание : формально функция ФАЙЛЫ относится к макро-функциям, поэтому необходимо будет сохранить ваш файл в формате с поддержкой макросов (xlsm или xlsb).

Способ 2. Готовый макрос для ленивых

Если вы знакомы с макросами (не в смысле их программирования, а в смысле копипастинга готовых кодов на VBA), то вам, возможно, отлично зайдёт небольшой макрос, добавляющий в текущую книгу новый пустой лист и выводящий на него список всех файлов с их параметрами из заданной пользователем папки.

Для добавления макроса в вашу книгу нажмите сочетание клавиш Alt + F11 , или кнопку Visual Basic на вкладке Разработчик (Developer) , в открывшемся окне редактора Visual Basic вставьте новый модуль через меню Insert — Module и скопируйте туда текст этого макроса:

Для запуска макроса нажмите сочетание клавиш Alt + F8 ,или кнопку Макросы (Macros) на вкладке Разработчик (Developer) , выберите наш макрос FileList и нажмите кнопку Выполнить (Run) . В диалоговом окне выберите любую папку или диск и — вуаля!

Если захотите, чтобы вместо пути к файлу в столбце B выводилась живая гиперссылка, то замените 52-ю строку

Cells(r, 2).Formula = FileItem.Path

Cells(r, 2).Formula = «=HYPERLINK(«»» & FileItem.Path & «»»)»

Способ 3. Мощь и красота — надстройка Power Query

Power Query — это очень мощная и при этом бесплатная надстройка для Excel от Microsoft, упрощающая множество задач по загрузке и трансформации данных. В нашей ситуации она тоже может здорово помочь.

Если у вас Excel 2016 или новее, то Power Query уже встроена в Excel по умолчанию, поэтому просто на вкладке Данные выберите команду Создать запрос / Получить данные — Из файла — Из папки (Create Query / Get Data — From file — From folder) . Если у вас Excel 2010-2013, то Power Query нужно будет скачать с сайта Microsoft и установить как отдельную надстройку и она появится у вас в Excel в виде отдельной вкладки Power Query. На ней будет аналогичная кнопка Из файла — Из папки (From file — From folder) .

В открывшемся окне нужно будет указать папку, содержимое которой мы хотим получить. После нажатия на ОК Power Query обшарит указанную папку и все вложенные подпапки и выдаст на экран окно с предварительным просмотром результатов:

Если внешний вид списка вас устраивает, то можно смело жать внизу кнопку Загрузить (Load) , чтобы залить эти данные на новый лист. Если же хочется дополнительно обработать список (удалить лишние столбцы, отобрать только нужные файлы и т.п.), то нужно выбрать команду Изменить / Преобразовать данные (Edit / Transform Data).

Поверх окна Excel откроется окно редактора Power Query, где мы увидим список всех наших файлов в виде таблицы:

Дальше возможны несколько вариантов:

    Если нужны только файлы определенного типа, то их можно легко отобрать с помощью фильтра по столбцу Extension:

Аналогичным образом фильтрами по столбцам Date accessed, Date modified или Date created можно отобрать файлы за нужный период (например, созданные только за последний месяц и т.п.):

Если нужно получить данные не из всех папок, то фильтруем по столбцу Folder Path, чтобы оставить только те строки, где путь содержит/не содержит нужные имена папок:

  • Там же можно выполнить сортировку файлов по любому столбцу, если требуется.
  • После того, как необходимые файлы отобраны, можно смело удалить ненужные столбцы, щелкнув по заголовку столбца правой кнопкой мыши и выбрав команду Удалить (Remove column ) . Это, кстати, уже никак не повлияет на фильтрацию или сортировку нашего списка:

    Если в будущем планируется подсчитывать количество файлов в каждой папке (например, для контроля поступивших заявок или подсчета статистики по заявкам), то имеет смысл дополнительно сделать ещё пару действий:

    • Щелкните правой кнопкой мыши по столбцу Folder Path и выберите команду Дублировать столбец (Duplicate Column) .
    • Выделите скопированный столбец и на вкладке Преобразование (Transform) выберите Разделить столбец — По разделителю (Split Column — By delimiter)

    Мы получим рядом с нашими данными еще несколько столбцов, где будут продублированы имена вложенных папок — это пригодится нам чуть позже для подсчета статистики с помощью сводной таблицы:

    Получившиеся столбцы можно переименовать (Диск, Папка1, Папка2 и т.д.), просто щёлкнув дважды по заголовку каждого.

    И, наконец, когда список готов, то его можно выгрузить на лист с помощью команды Главная — Закрыть и загрузить — Закрыть и загрузить в. (Home — Close & Load — Close & Load to. ) :

    И, само-собой, теперь можно построить по нашей таблице сводную (вкладка Вставка — Сводная таблица), чтобы легко подсчитать количество файлов в каждой папке:

    Дополнительным бонусом можно сделать еще один столбец с функцией ГИПЕРССЫЛКА (HYPERLINK) , которая создаст красивые стрелочки-ссылки для моментального перехода к каждому файлу:

    Мелочь, а приятно 🙂

    И вдвойне приятно, что в будущем, при изменении содержимого исходной папки, достаточно будет просто щелкнуть мышью по нашей таблице и выбрать команду Обновить (Refresh) — и Power Query выполнит всю цепочку запрограммированных нами единожды действий уже автоматически, отобразив все изменения в составе папки.

    Читайте также  Принципы калькуляции блюд для столовой общепита: составление карты, проведение расчетов

    Источник:
    http://www.planetaexcel.ru/techniques/3/45/

    Microsoft Excel

    трюки • приёмы • решения

    Как получить список имен файлов, содержащихся в папке, а затем отобразить этот список на листе Excel

    В этой статье будет рассказано, как получить список имен файлов, содержащихся в каталоге, а затем отобразить этот список на листе. Данный способ связан с использованием макрофункции Excel 4 XLM в именованной формуле. Такой метод удобен, поскольку позволяет относительно легко выстроить на листе список имен файлов — обычно для этого требуются сложные макросы VBA.

    Откройте новую книгу, а затем выполните следующие действия для создания именованной формулы.

    1. Выполните команду Формулы ► Присвоить имя, чтобы открыть диалоговое окно Создание имени.
    2. Впишите в поле Имя название Список.
    3. Введите следующую формулу в поле Диапазон (рис. 8.1): =ФАЙЛЫ(Лист1!$A$1) .
    4. Нажмите ОК, чтобы закрыть окно Создание имени.

    Рис. 8.1. Работа с диалоговым окном для создания именованной формулы

    Обратите внимание: функция ФАЙЛЫ не относится к стандартным функциям рабочего листа. Это макрофункция, написанная в сравнительно старом XLM-стиле и предназначенная для использования на специальном листе макросов. Она принимает один аргумент (путь к каталогу и описание файла) и возвращает массив имен файлов, содержащихся в данном каталоге и удовлетворяющих описанию файла. Обычные формулы рабочего листа не могут использовать подобные XLM-функции, а именованные формулы — могут.

    Определив именованную формулу, введите в ячейку А1 путь к каталогу и описание файла. Например: C:Excelexpert.ru* *. Далее формула отображает первый найденный файл: =ИНДЕКС(Список;1) . Если изменить второй аргумент на 2, то будет отображен второй найденный файл и т. д. На рис. 8.2 приведен пример. Путь и описание файла указаны в ячейке А1. В ячейке А2 содержится следующая формула, скопированная далее по столбцу: =ИНДЕКС(Список;СТР0КА()-1) . Функция СТРОКА, используемая здесь, генерирует ряд последовательных натуральных чисел: 1,2,3 и т. д. Эти числа используются в качестве второго аргумента функции ИНДЕКС.

    Рис. 8.2. Использование XLM-макроса в именованной формуле позволяет создать на листе список имен файлов

    Обратите внимание: в ячейке А17 (и ниже) происходит ошибка. Дело в том, что в каталоге содержится всего 19 файлов и формула пытается отобразить имена несуществующих. Если изменить каталог или описание файла в ячейке А1, то формулы обновляются и выводят имена новых файлов.

    Если вы пользуетесь такими приемами, то книгу нужно сохранить как файл с поддержкой макросов (в формате *.xlsm или *.xls).

    Источник:
    http://excelexpert.ru/kak-poluchit-spisok-imen-fajlov-soderzhashhixsya-v-papke-a-zatem-otobrazit-etot-spisok-na-liste-excel

    Как получить список файлов в папке в Excel

    В этом посте мы увидим, как получить список файлов в папке в Excel. Мы покажем вам, как использовать Excel для просмотра сведений о файлах и папках в Windows, импортировав все данные о файлах и папках в Microsoft Excel, чтобы отслеживать размер файла, тип файла и дату последнего изменения.

    У нас есть много файлов и папок на нашем ПК с Windows, и мы можем часто удалять или добавлять больше файлов и папок. Там могут быть некоторые папки и файлы, которые очень важны для нас, и кто-то может редактировать их без нашего уведомления. Но мы не можем продолжать просматривать каждую папку и файл, чтобы узнать, какая из них была отредактирована. Если это была модификация файла или папки, мы можем отсортировать их, используя «Последнее изменение», и мы можем узнать, какие из них были изменены недавно.

    Но что, если некоторые файлы и папки были удалены из этого каталога? Мы не сможем отслеживать, что именно было удалено. Но вы можете использовать Excel для просмотра файлов и сведений о папках в каталоге, что было бы полезно для вас знать хотя бы список файлов и папок, которые были удалены.

    Импортируйте и получите список имен файлов в лист Excel

    Если вы используете Microsoft Excel для импорта всех сведений о файлах и папках в Excel, это поможет вам регулярно отслеживать дату и время последнего изменения, типы файлов, список файлов, размер файлов и многое другое. Для этого выполните следующие простые шаги.

    Перейдите в каталог или папку в проводнике Windows, который вы хотите отслеживать. Здесь я хочу отслеживать мои файлы и папки папки «Документы». Скопируйте путь этого каталога.

    Теперь откройте любой веб-браузер по вашему выбору и вставьте скопированный путь (путь к папке, которую вы только что скопировали на предыдущем шаге) в адресную строку браузера. Я использовал Google Chrome здесь. Просто добавьте к URL-адресу префикс file:///, и его содержимое будет отображаться на веб-странице.

    Чтобы сохранить эту веб-страницу как автономную копию, нажмите CTRL + S или щелкните правой кнопкой мыши веб-страницу и выберите «Сохранить страницу как». Выберите место назначения, дайте ему имя и сохраните веб-страницу.

    Теперь с помощью проводника Windows перейдите в папку, в которой вы сохранили автономную веб-страницу, и скопируйте путь. Чтобы открыть лист Excel, нажмите вкладку Данные и нажмите Из Интернета. Откроется окно, в адресной строке вставьте скопированный путь и нажмите кнопку «Перейти». Он загрузит все содержимое веб-страницы.

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

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

    Заключение

    Поскольку мы большую часть времени занимаемся организацией файлов и папок, рекомендуется импортировать детали файлов и папок в Excel. Это было бы полезно, если бы любой из ваших файлов или папок должен был быть удален. Данные в листе Excel не обновляются, поэтому нам необходимо регулярно импортировать данные. Вы можете использовать этот метод, когда нужно отслеживать не только изменения файла, но и имена файлов.

    Источник:
    http://techarks.ru/office/excel/kak-poluchit-spisok-fajlov-v-papke-v-excel/

    Получение списка файлов из папки в текстовом виде

    Для определённых целей может потребоваться составить список файлов, содержащихся в папке. Если таковых немного, то задачу можно выполнить вручную без особых затруднений, но если в папке десятки, сотни или даже тысячи файлов, то пытаться составить их список вручную это бесполезная трата времени. Можно ли этот процесс как-то автоматизировать?

    Автоматическое создание списка файлов

    К счастью, функционал Windows и других программных решений, позволяет создавать списки файлов в папках в автоматическом порядке. Данные списки можно потом будет без проблем скопировать в текстовый файл и редактировать по мере необходимости.

    Рассмотрим все имеющиеся способы создания такого списка.

    Вариант 1: «Командная строка»

    Этот способ является стандартным и не требует от пользователя каких-либо особых умений, за исключением базового владения «Командной строкой». Итак, инструкция к данному варианту выглядит следующим образом:

    1. Перейдите в ту папку, список файлов из которой вы хотели бы получить.
    2. Теперь зажмите Shift на клавиатуре и нажмите правой кнопкой мыши по пустому месту в окне «Проводника».
    3. Должно появится контекстное меню, где требуется выбрать вариант «Запуск командной строки» или «Открыть окно команд здесь». В случае с последними версиями Windows 10 такого пункта может не быть. Вместо этого нужно нажать на «Запустить окно PowerShell здесь». PowerShell – это новый аналог «Командной строки», который Майкрософт активно внедряет в последние версии Windows 10. По сути отличий в функционале нет никаких.

  • Теперь вы можете ввести одну из следующих команд:
    • dir /b>spisok.txt Данная команда сохраняет только имена файлов в файл spisok.txt. Вы можете вместо него указать любое другое название, какое вам будет удобно, но учтите, что оно не должно содержать кириллических символов;
    • dir /s>spisok.txt Сохраняет не только имена файлов, содержащихся в папке, но и имена папок и подпапок, которые могут быть расположена в основной папке.
  • Для применения выбранной команды впишите её и нажмите на Enter.

  • Спустя некоторое время в той папке, в которую вы перешли в первом шаге появится файл с названием spisok.txt или другим, если вы задавали другое. Откройте его с помощью «Блокнота».
  • Всю информацию из него можно скопировать в документ Word, так как последний удобнее редактировать. К тому же, если в папке содержались файлы или другие папки в названии которых присутствовали кириллические символы, то в «Блокноте» таковые могут отображаться некорректно, так как нужные кодировки не поддерживаются.

    Читайте также  Как сделать жирные линии в excel?

    Вариант 2: Использование BAT-файла

    Данный способ тоже не отличается какой-либо сложностью, плюс даёт почувствовать себя немного программистом. Суть заключается в создании специального файла с алгоритмом, который выведет список всех элементов в папке в отдельный текстовый файл. Итак, рассмотрим инструкцию к этому варианту более подробно:

      Создайте в любом месте на компьютере текстовый файл. Для этого нажмите правой кнопкой мыши и в меню выберите пункт «Создать». Из открывшегося подменю выберите вариант «Текстовый файл».

  • Теперь откройте только что созданный файл при помощи «Блокнота».
  • Пропишите туда следующий алгоритм:

    echo %date% %time% >spisok.txt

    dir /b /d >>spisok.txt

    После исполнения данного BAT-файла в папке, где он был выполнен будет создан текстовый файл spisok.txt, где будет представлен список всех элементов, находящихся в папке. Но для начала вам нужно сохранить этот алгоритм, как BAT-файл. Нажмите в верхнем меню на «Файл», а из контекстного меню выберите вариант «Сохранить как».

  • В поле «Имя файла» введите spisok.bat, а в «Тип файла» поставьте значение «Все файлы».
  • Нажмите «Сохранить».

  • Теперь перенесите созданный BAT-файл в папку, из которой требуется получить список файлов.
  • Запустите его двойным нажатием левой кнопки мыши.
  • Появится окно, где будет показано выполнение алгоритма, спустя несколько секунд окно исчезнет, а в папке появится файл spisok.txt, где будет представлен список всех элементов в папке.
  • Содержимое данного файла также можно перенести в текстовый документ MS Word. Однако в этом случае проблем с кодировкой и неверным отображением кириллических символов не наблюдается.

    Вариант 3: DirLister

    Данное бесплатное ПО не требуется установки на компьютер и с его помощью вы можете создать список всех элементов в той или иной папке. Инструкция по её использованию выглядит следующим образом:

    1. Перейдите на официальный сайт разработчика и скачайте архив с программой.
    2. Распакуйте архив, вытащив от туда исполняемый EXE-файл.
    3. Запустите его.

  • Обратите внимание на блок «Directory To Scan». Здесь будет расположен адрес папки, которую нужно просканировать. Выберите её при помощи кнопки «Open».
  • Откроется окно «Проводника» Windows, где нужно выбрать нужную папку и открыть её.
  • Теперь перейдите в блок ниже – «Output File». Здесь указывается место для сохранения текстового файла со списком. Нажмите на кнопку «Save as», чтобы указать расположение для сохранения.
  • В блоке «File Type» можно указать критерии сохранения файлов в список. Например, сохранятся будут только названия файлов с расширением HTML, TXT и т.д. Для этого нужно установить маркеры напротив соответствующих пунктов.
  • Чтобы начать процедуру создания списка, нажмите на кнопку «Make List», что расположена в нижней части окна.
  • Спустя некоторое время вы увидите надпись «All file processed correctly», что означает успешное завершение процедуры.
  • Вариант 4: Total Commander

    Total Commander – это популярный файловый менеджер, где пользователь может быстро получить и скопировать всю основную информацию о файлах, а также о содержимом папок. В данном случае получить список файлов, находящихся в папке, можно следующим образом:

    1. В окне Total Commander откройте нужную папку.
    2. В верхнем меню нажмите на пункт «Выделение». Появится контекстное меню, где нужно нажать на вариант «Выделить всё».
    3. Затем в этом же меню выберите пункт «Копировать имена файлов в буфер обмена».

  • Создайте и откройте текстовый документ. Это можно сделать как при помощи простого Блокнота, так и Word или других офисных программ.
  • Вставьте содержимое буфера обмена на страницу, воспользовавшись комбинацией клавиш Ctrl+V или вызвав контекстное меню и выбрав там соответствующий пункт.
  • Вариант 5: Браузер

    Во всех современных браузерах, будь то Opera, Google Chrome, Yandex и т.д., есть функция просмотра содержимого папок и некоторых файлов, расположенных на компьютере.

    Инструкция к этому варианту выглядит следующим образом:

    1. Откройте «Проводник». Выберите при помощи щелчка левой кнопкой мыши ту папку, которую хотите просмотреть в браузере.
    2. Перетащите эту папку в любой удобный для вас браузер. В данном случае рассматривается вариант с Opera.

  • Здесь откроется папка со всем содержимым, которое будет представлено в виде списка. Выделите его и скопируйте, использовав сочетание клавиш Ctrl+C.
  • Создайте любой текстовый документ и откройте его.
  • Вставьте скопированный список.
  • Это были все способы, позволяющие вывести список содержимых в папке файлов в отдельный текстовый документ.

    Источник:
    http://public-pc.com/how-to-get-a-list-of-files-in-a-folder-in-a-text-file/

    Управление файлами из Excel

    Простой и удобный инструмент для управления файлами прямо из приложения Excel, который позволяет создать список из файлов заданных папок, быстро копировать и перемещать файлы из одних папок в другие, переименовывать и удалять файлы по списку.

    Все что для этого нужно – это приложение Excel с поддержкой языка программирования VBA (Visual Basic for Application) и надстройка, написанная на этом языке. Для осуществления действий с файлами, в диалоговом окне надстройки необходимо выбрать одну из доступных опций и указать диапазоны ячеек с полными именами файлов. Полным именем файла называется путь к этому файлу вместе с именем файла, включая расширение, например C:Program Files7-Zip7z.exe

    Создание списка файлов

    Чтобы создать список из полных имен файлов, достаточно указать папку, в которой необходимые файлы находятся. При необходимости можно задать глубину вложенности папок. Если глубина не задана, то поиск файлов ведется по всем вложенным папкам. Если из папок нужно выбрать файлы только с определенным расширением, можно использовать поиск файлов по маске, вписав в соответствующее поле нужное расширение, например, «.pdf» (без кавычек).

    Для удобства последующей обработки файлов, при формировании списка можно использовать дополнительные возможности, такие как: нумерация позиций списка, подстановка гиперссылок, вывод дат создания файлов, а также вывод размеров файлов.

    Копирование файлов

    При копировании файлов необходимо иметь два списка полных имен, список со старыми именами и список с новыми именами. Старые имена – это текущие полные имена файлов, а новые имена – это имена файлов, но уже в новой папке, либо в новых папках, если папки разные. Например, чтобы скопировать файл «7z.exe» из папки C:Program Files7-Zip в папку D:Program Files7-Zip необходимо в одном списке указать старое имя C:Program Files7-Zip7z.exe, а в другом – новое имя D:Program Files7-Zip7z.exe. При этом изменяться может не только имя диска, а любая папка или несколько папок. Главное, чтобы все эти папки физически существовали на заданном диске.

    В результате копирования исходные файлы остаются на своих местах, а их копии появляются в заданных папках. В случае, если кроме путей к файлам изменяются и имена файлов, то происходит одновременное копирование и переименование файлов.

    Перемещение файлов

    Перемещение файлов производится аналогично копированию, с той лишь разницей, что исходных файлов в исходных папках не остается, они перемещаются по новым адресам. Если в списке с новыми именами изменить и пути и имена, то одновременно с перемещением происходит и переименование файлов. В случае если пути остаются неизменными, а имена меняются, то происходит переименование файлов.

    Читайте также  Excel - одновременный доступ и работа в excel Online от Yandex диск

    Удаление файлов

    При удалении файлов список с новыми именами не требуется. Выделяется диапазон ячеек со старыми полными именами файлов и после пуска программы файлы этого списка удаляются. При этом к данной операции следует относиться с особой осторожностью, так как восстановить удаленные файлы из корзины не удастся.

    Видео по работе с надстройкой

    Источник:
    http://macros-vba.ru/nadstrojki/excel/309-upravlenie-fajlami-iz-excel

    Конференция VBStreets

    Весь вкус программирования!

    • Список форумовVisual BasicVisual Basic 1–6
    • Изменить размер шрифта
    • FAQ
    • Вход

    Получить список файлов в папке

    Получить список файлов в папке

    beat_swamp » 06.12.2005 (Вт) 11:30

    alibek » 06.12.2005 (Вт) 11:32

    Matew » 06.12.2005 (Вт) 11:41

    alibek
    beat_swamp
    Переделаешь сам? Это перебирает папки:
    Код: Выделить всё Private Function FindFilesAPI2(Path As String, SearchStr As String, FileCount As Integer, DirCount As Integer, sFound() As String, Optional oldpath As String)
    On Error Resume Next
    ‘KPD-Team 1999
    ‘Улучшения (c) hCORe 2004
    ‘E-Mail: KPDTeam@Allapi.net
    ‘ vb6@mail.ru
    ‘URL: http://www.allapi.net/
    ‘ http://amelso.narod.ru

    Dim FileName As String ‘ Переменная для имени.
    Dim DirName As String ‘ Папка
    Dim dirNames() As String ‘ Буфер папок
    Dim nDir As Integer ‘ количество директорий
    Dim i As Integer ‘ счетчик цикла.
    Dim hSearch As Long ‘ дескриптор поиска
    Dim WFD As WIN32_FIND_DATA
    Dim Cont As Integer
    If Right(Path, 1) <> «» Then Path = Path & «»
    ‘ Поиск подпапок.
    nDir = 0
    ReDim dirNames(nDir)
    Cont = True
    ‘ Пройти по всем папкам и
    ‘ просуммировать размеры файлов.
    hSearch = FindFirstFile(Path & SearchStr, WFD)
    Cont = True
    ReDim sFound(0) As String
    If hSearch <> INVALID_HANDLE_VALUE Then
    While Cont
    DoEvents
    FileName = StripNulls(WFD.cFileName)
    If (FileName <> «.») And (FileName <> «..») Then
    FindFilesAPI2 = FindFilesAPI2 + (WFD.nFileSizeHigh _
    * MAXDWORD) + WFD.nFileSizeLow
    FileCount = FileCount + 1
    If Len(FileName) <> 0 Then
    If Right(FileName, 3) = «.md» Or Right(FileName, 3) = «.MD» Then
    If Right$(Path, 9) <> «NEW_STRU» Then
    ReDim Preserve _
    MasBaz(UBound(MasBaz) _
    + 1)
    MasBaz(UBound(MasBaz) — 1) = Path ‘& FileName
    ‘ Err.Clear
    DirCount = DirCount + 1
    End If
    End If
    End If
    End If
    ‘ Получить дескриптор следующего файла
    Cont = FindNextFile(hSearch, WFD)
    Wend
    End If
    Cont = FindClose(hSearch)
    hSearch = FindFirstFile(Path & «*», WFD)
    If hSearch <> INVALID_HANDLE_VALUE Then
    Do While Cont
    DoEvents
    DirName = StripNulls(WFD.cFileName)
    ‘ Пропустить текущую и родительскую папку.
    If (DirName <> «.») And (DirName <> «..») Then
    ‘ If Len(DirName) <> 0 Then
    ‘ If Right(DirName, 3) = «.md» Or Right(DirName, 3) = «.MD» Then
    ‘ If Right$(Path, 9) <> «NEW_STRU» Then
    ‘ ReDim Preserve _
    ‘ sFound(UBound(sFound) _
    ‘ + 1)
    ‘ If Len(oldpath) <> 0 Then
    ‘ sFound(UBound(sFound) — _
    ‘ 1) = Path
    ‘ Else
    ‘ sFound(UBound(sFound) — _
    ‘ 1) = Path
    ‘ End If
    ‘ End If
    ‘ End If
    ‘ End If
    ‘ Проверка на атрибуты.
    If GetFileAttributes(Path & DirName) And _
    FILE_ATTRIBUTE_DIRECTORY Then

    Form1.Caption = Path & DirName

    FindFilesAPI2 Path & DirName, SearchStr, _
    FileCount, DirCount, sFound(), Path
    End If
    End If
    ‘Перейти в следующую подпапку.
    Cont = FindNextFile(hSearch, WFD)
    Loop
    Cont = FindClose(hSearch)
    End If
    End Function
    ‘Пример использования:
    ‘FindFilesAPI2 «C:» ,»*.*», 0, 0, myArray()

    beat_swamp » 06.12.2005 (Вт) 11:42

    RayShade » 06.12.2005 (Вт) 13:35

    Код: Выделить всё for each fName in createobject(«scripting.filesystemobject»).getfolder(«c:123»).files
    debug.pring fName.name
    next fname

    keks-n » 06.12.2005 (Вт) 14:14

    beat_swamp » 06.12.2005 (Вт) 14:54

    BV » 06.12.2005 (Вт) 16:09

    keks-n » 06.12.2005 (Вт) 16:18

    beat_swamp » 06.12.2005 (Вт) 16:24

    keks-n » 06.12.2005 (Вт) 16:31

    keks-n » 06.12.2005 (Вт) 16:34

    Пример из API-Guide:

    ‘Create a form with a command button (command1), a list box (list1)
    ‘and four text boxes (text1, text2, text3 and text4).
    ‘Type in the first textbox a startingpath like c:
    ‘and in the second textbox you put a pattern like *.* or *.txt

    Private Declare Function FindFirstFile Lib «kernel32» Alias «FindFirstFileA» (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
    Private Declare Function FindNextFile Lib «kernel32» Alias «FindNextFileA» (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
    Private Declare Function GetFileAttributes Lib «kernel32» Alias «GetFileAttributesA» (ByVal lpFileName As String) As Long
    Private Declare Function FindClose Lib «kernel32» (ByVal hFindFile As Long) As Long

    Const MAX_PATH = 260
    Const MAXDWORD = &HFFFF
    Const INVALID_HANDLE_VALUE = -1
    Const FILE_ATTRIBUTE_ARCHIVE = &H20
    Const FILE_ATTRIBUTE_DIRECTORY = &H10
    Const FILE_ATTRIBUTE_HIDDEN = &H2
    Const FILE_ATTRIBUTE_NORMAL = &H80
    Const FILE_ATTRIBUTE_READONLY = &H1
    Const FILE_ATTRIBUTE_SYSTEM = &H4
    Const FILE_ATTRIBUTE_TEMPORARY = &H100

    Private Type FILETIME
    dwLowDateTime As Long
    dwHighDateTime As Long
    End Type

    Private Type WIN32_FIND_DATA
    dwFileAttributes As Long
    ftCreationTime As FILETIME
    ftLastAccessTime As FILETIME
    ftLastWriteTime As FILETIME
    nFileSizeHigh As Long
    nFileSizeLow As Long
    dwReserved0 As Long
    dwReserved1 As Long
    cFileName As String * MAX_PATH
    cAlternate As String * 14
    End Type
    Function StripNulls(OriginalStr As String) As String
    If (InStr(OriginalStr, Chr(0)) > 0) Then
    OriginalStr = Left(OriginalStr, InStr(OriginalStr, Chr(0)) — 1)
    End If
    StripNulls = OriginalStr
    End Function

    Источник:
    http://bbs.vbstreets.ru/viewtopic.php?p=6571777