Vba excel список файлов в папке по маске

 

lexi

Пользователь

Сообщений: 16
Регистрация: 01.01.1970

Ребята, срочно нужна помощь.

Что и куда добавить в текст макроса:

http://planetaexcel.ru/techniques/12/45/#5990

чтобы список файлов выводился по маске?

Пример: мне нужен список файлов из папок и подпапок с расширением *.jpg.

 

JayBhagavan

Пользователь

Сообщений: 11833
Регистрация: 17.01.2014

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

Изучите.

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

lexi

Пользователь

Сообщений: 16
Регистрация: 01.01.1970

#4

26.02.2016 10:41:07

Спасибо, но я в VBA никак.
Помогите, что изменить в коде?
Я понимаю, что после FSO что-то нужно добавить… Но как именно и что писать догнать не могу…

Код
Sub Впримечание()
    Dim V As String
    Dim BrowseFolder As String
     
    'открываем диалоговое окно выбора папки
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Выберите папку или диск"
        .Show
        On Error Resume Next
        Err.Clear
        V = .SelectedItems(1)
        If Err.Number <> 0 Then
            MsgBox "Вы ничего не выбрали!"
            Exit Sub
        End If
    End With
    
    
    BrowseFolder = CStr(V)
     
    'вызываем процедуру вывода списка файлов
    'измените True на False, если не нужно выводить файлы из вложенных папок
    ListFilesInFolder BrowseFolder, True
End Sub
 
 
Private Sub ListFilesInFolder(ByVal SourceFolderName As String, ByVal IncludeSubfolders As Boolean)
 
    Dim FSO As Object
    Dim SourceFolder As Object
    Dim SubFolder As Object
    Dim FileItem As Object
    Dim r As Long
    Dim s As Long
    
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set SourceFolder = FSO.getfolder(SourceFolderName)


    r = Selection.Row   'находим первую пустую строку
    s = Selection.Column
    'выводим данные по файлу
    For Each FileItem In SourceFolder.Files

        Cells(r, s).Formula = "=HYPERLINK(""" & FileItem.Path & """)"

        r = r + 1
        X = SourceFolder.Path
        
    Next FileItem
     
    'вызываем процедуру повторно для каждой вложенной папки
    If IncludeSubfolders Then
        For Each SubFolder In SourceFolder.SubFolders
            ListFilesInFolder SubFolder.Path, True
        Next SubFolder
    End If
 
    Set FileItem = Nothing
    Set SourceFolder = Nothing
    Set FSO = Nothing
    
    Selection.End(xlUp).Select
    Selection.End(xlDown).Select
    Range(Selection, Selection.End(xlDown)).Select
       
 
'создаем примечания
 
    Dim rngPics As Range, rngOut As Range
    Dim i As Long, p As String, w As Long, h As Long
     
    Set rngPics = Selection.Rows    'диапазон путей к картинкам
    Set rngOut = Selection.Rows     'диапазон вывода примечаний
     
    rngOut.ClearComments        'удаляем старые примечания
     
    'проходим в цикле по ячейкам
    For i = 1 To rngPics.Cells.Count
     
        p = rngPics.Cells(i, 1).Value       'считываем путь к файлу картинки
        w = LoadPicture(p).Width            'и ее размеры
        h = LoadPicture(p).Height
         
        With rngOut.Cells(i, 1)
            .AddComment.Text Text:=""       'создаем примечание без текста
            .Comment.Visible = True
            .Comment.Shape.Select True
        End With
        With rngOut.Cells(i, 1).Comment.Shape   'заливаем картинкой
            .Fill.UserPicture p
            .ScaleWidth 1, msoFalse, msoScaleFromTopLeft
            .ScaleHeight h / w * 1.8, msoFalse, msoScaleFromTopLeft     'корректируем размеры
        End With
    Next i
 
    Application.DisplayCommentIndicator = xlCommentIndicatorOnly
    
 
End Sub

 

 

JayBhagavan

Пользователь

Сообщений: 11833
Регистрация: 17.01.2014

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

#5

26.02.2016 12:51:43

Код
For Each FileItem In SourceFolder.Files
if "jpg" = FSO.GetExtensionName(FileItem.Path) then
        Cells(r, s).Formula = "=HYPERLINK(""" & FileItem.Path & """)"
 
        r = r + 1
        X = SourceFolder.Path
end if         
    Next FileItem

Не проверял.

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

Апострофф

Пользователь

Сообщений: 720
Регистрация: 06.04.2015

#6

26.02.2016 13:15:53

Цитата
JayBhagavan написал:
if «jpg» = FSO.GetExtensionName(FileItem.Path) then

На всякий пожарный —

Код
if "jpg" = LCASE$(FSO.GetExtensionName(FileItem.Path)) then
 

JayBhagavan

Пользователь

Сообщений: 11833
Регистрация: 17.01.2014

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

Апострофф, Вы как всегда правы. :)

Изменено: JayBhagavan26.02.2016 13:16:35

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

lexi

Пользователь

Сообщений: 16
Регистрация: 01.01.1970

#8

26.02.2016 19:49:52

JayBhagavan, Апострофф, огромное спасибо за помощь!

Макрос VBA загрузки списка файлов из папки

Функция FilenamesCollection предназначена для получения списка файлов из папки, с учётом выбранной глубины поиска в подпапках.

Используется рекурсивный перебор папок, до заданного уровня вложенности.
В процессе перебора папок, пути у найденным файлам помещаются в коллекцию (объект типа Collection) для последующего перебора.

К статье прикреплено 2 примера файла с макросами на основе этой функции:

  • Пример в файле FilenamesCollection.xls выводит список файлов на чистый лист новой книги (формируя заголовки) 
  • Пример в файле FilenamesCollectionEx.xls более функционален — он, помимо списка файлов из папки, отображает размер файла, и дату его создания, а также формирует в ячейках гиперссылки на найденные файлы.
    Вывод списка производится на лист запуска, параметры поиска файлов задаются в ячейках листа (см. скриншот)

Смотрите также расширенную версию макроса на базе этой функции:

Макрос FolderStructure выводит в таблицу Excel список файлов и подпапок с отображением структуры (вложенности файлов и подпапок)

ПРИМЕЧАНИЕ: Если вы выводите на лист список имен файлов картинок (изображений), то при помощи этой надстройки вы сможете вставить сами картинки в ячейки соседнего столбца (или в примечания к этим ячейкам)

Внимание: если требуется, чтобы поиск не зависел от регистра символов в маске файла
(к примеру, обнаруживались не только файлы .txt, но и .TXT и .Txt),
поставьте первой строкой в модуле директиву Option Compare Text

Function FilenamesCollection(ByVal FolderPath As String, Optional ByVal Mask As String = "", _
                             Optional ByVal SearchDeep As Long = 999) As Collection
    ' © EducatedFool  excelvba.ru/code/FilenamesCollection
    ' Получает в качестве параметра путь к папке FolderPath,
    ' маску имени искомых файлов Mask (будут отобраны только файлы с такой маской/расширением)
    ' и глубину поиска SearchDeep в подпапках (если SearchDeep=1, то подпапки не просматриваются).
    ' Возвращает коллекцию, содержащую полные пути найденных файлов
    ' (применяется рекурсивный вызов процедуры GetAllFileNamesUsingFSO)

    Set FilenamesCollection = New Collection    ' создаём пустую коллекцию
    Set FSO = CreateObject("Scripting.FileSystemObject")    ' создаём экземпляр FileSystemObject
    GetAllFileNamesUsingFSO FolderPath, Mask, FSO, FilenamesCollection, SearchDeep ' поиск
    Set FSO = Nothing: Application.StatusBar = False    ' очистка строки состояния Excel
End Function
 
Function GetAllFileNamesUsingFSO(ByVal FolderPath As String, ByVal Mask As String, ByRef FSO, _
                                 ByRef FileNamesColl As Collection, ByVal SearchDeep As Long)
    ' перебирает все файлы и подпапки в папке FolderPath, используя объект FSO
    ' перебор папок осуществляется в том случае, если SearchDeep > 1
    ' добавляет пути найденных файлов в коллекцию FileNamesColl
    On Error Resume Next: Set curfold = FSO.GetFolder(FolderPath)
    If Not curfold Is Nothing Then    ' если удалось получить доступ к папке

        ' раскомментируйте эту строку для вывода пути к просматриваемой
        ' в текущий момент папке в строку состояния Excel
        ' Application.StatusBar = "Поиск в папке: " & FolderPath

        For Each fil In curfold.Files    ' перебираем все файлы в папке FolderPath
            If fil.Name Like "*" & Mask Then FileNamesColl.Add fil.Path
        Next
        SearchDeep = SearchDeep - 1    ' уменьшаем глубину поиска в подпапках
        If SearchDeep Then    ' если надо искать глубже
            For Each sfol In curfold.SubFolders    ' перебираем все подпапки в папке FolderPath
                GetAllFileNamesUsingFSO sfol.Path, Mask, FSO, FileNamesColl, SearchDeep
            Next
        End If
        Set fil = Nothing: Set curfold = Nothing    ' очищаем переменные
    End If
End Function

‘ Пример использования функции в макросе:

Sub ОбработкаФайловИзПапки()
    On Error Resume Next
    Dim folder$, coll As Collection
 
    folder$ = ThisWorkbook.Path & "Платежи"
    If Dir(folder$, vbDirectory) = "" Then
        MsgBox "Не найдена папка «" & folder$ & "»", vbCritical, "Нет папки ПЛАТЕЖИ"
        Exit Sub        ' выход, если папка не найдена
    End If
 
    Set coll = FilenamesCollection(folder$, "*.xls")        ' получаем список файлов XLS из папки
    If coll.Count = 0 Then
        MsgBox "В папке «" & Split(folder$, "")(UBound(Split(folder$, "")) - 1) & "» нет ни одного подходящего файла!", _
               vbCritical, "Файлы для обработки не найдены"
        Exit Sub        ' выход, если нет файлов
    End If
 
    ' перебираем все найденные файлы
    For Each file In coll
        Debug.Print file        ' выводим имя файла в окно Immediate
    Next
End Sub

Этот код позволяет осуществить поиск нужных файлов в выбранной папке (включая подпапки), и выводит полученный список файлов на лист книги Excel:

Sub ПримерИспользованияФункции_FilenamesCollection()
    ' Ищем на рабочем столе все файлы TXT, и выводим на лист список их имён.
    ' Просматриваются папки с глубиной вложения не более трёх.

    Dim coll As Collection, ПутьКПапке As String
    ' получаем путь к папке РАБОЧИЙ СТОЛ
    ПутьКПапке = CreateObject("WScript.Shell").SpecialFolders("Desktop")
    ' считываем в колекцию coll нужные имена файлов
    Set coll = FilenamesCollection(ПутьКПапке, ".txt", 3)
 
    Application.ScreenUpdating = False    ' отключаем обновление экрана
    ' создаём новую книгу
    Dim sh As Worksheet: Set sh = Workbooks.Add.Worksheets(1)
    ' формируем заголовки таблицы
    With sh.Range("a1").Resize(, 3)
        .Value = Array("№", "Имя файла", "Полный путь")
        .Font.Bold = True: .Interior.ColorIndex = 17
    End With
 
    ' выводим результаты на лист
    For i = 1 To coll.Count ' перебираем все элементы коллекции, содержащей пути к файлам
        sh.Range("a" & sh.Rows.Count).End(xlUp).Offset(1).Resize(, 3).Value = _
        Array(i, Dir(coll(i)), coll(i))    ' выводим на лист очередную строку
        DoEvents    ' временно передаём управление ОС
    Next
    sh.Range("a:c").EntireColumn.AutoFit    ' автоподбор ширины столбцов
    [a2].Activate: ActiveWindow.FreezePanes = True ' закрепляем первую строку листа
End Sub

Ещё один пример использования:

Sub ЗагрузкаСпискаФайлов()
    ' Ищем файлы в заданной папке по заданной маске,
    ' и выводим на лист список их параметров.
    ' Просматриваются папки с заданной глубиной вложения.

    Dim coll As Collection, ПутьКПапке$, МаскаПоиска$, ГлубинаПоиска%
 
    ПутьКПапке$ = [c1]    ' берём из ячейки c1
    МаскаПоиска$ = [c2]    ' берём из ячейки c2
    ГлубинаПоиска% = Val([c3])    ' берём из ячейки c3
    If ГлубинаПоиска% = 0 Then ГлубинаПоиска% = 999    ' без ограничения по глубине

    ' считываем в колекцию coll нужные имена файлов
    Set coll = FilenamesCollection(ПутьКПапке$, МаскаПоиска$, ГлубинаПоиска%)
 
    Application.ScreenUpdating = False    ' отключаем обновление экрана

    ' выводим результаты (список файлов, и их характеристик) на лист
    For i = 1 To coll.Count    ' перебираем все элементы коллекции, содержащей пути к файлам

        НомерФайла = i
        ПутьКФайлу = coll(i)
        ИмяФайла = Dir(ПутьКФайлу)
        ДатаСоздания = FileDateTime(ПутьКФайлу)
        РазмерФайла = FileLen(ПутьКФайлу)
 
        ' выводим на лист очередную строку
        Range("a" & Rows.Count).End(xlUp).Offset(1).Resize(, 5).Value = _
        Array(НомерФайла, ИмяФайла, ПутьКФайлу, ДатаСоздания, РазмерФайла)
 
        ' если нужна гиперссылка на файл во втором столбце
        ActiveSheet.Hyperlinks.Add Range("b" & Rows.Count).End(xlUp), ПутьКФайлу, "", _
                                   "Открыть файл" & vbNewLine & ИмяФайла
 
        DoEvents    ' временно передаём управление ОС
    Next
End Sub

PS: Найти подходящие имена файлов в коллекции можно при помощи следующей функции:

Function CollectionAutofilter(ByRef coll As Collection, ByVal filter$) As Collection
    ' Функция перебирает все элементы коллекции coll,
    ' оставляя лишь те, которые соответствуют маске filter$ (например, filter$="*некий текст*")
    ' Возвращает коллекцию, содержащую только подходящие элементы
    ' Если элементы не найдены - возвращается пустая коллекция (содержащая 0 элементов)
    On Error Resume Next: Set CollectionAutofilter = New Collection
    For Each Item In coll
        If Item Like filter$ Then CollectionAutofilter.Add Item
    Next
End Function
  • 301801 просмотр

Не получается применить макрос? Не удаётся изменить код под свои нужды?

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

0 / 0 / 0

Регистрация: 18.02.2017

Сообщений: 4

1

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

23.03.2017, 18:13. Показов 9021. Ответов 4


Студворк — интернет-сервис помощи студентам

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



0



es geht mir gut

11264 / 4746 / 1183

Регистрация: 27.07.2011

Сообщений: 11,437

23.03.2017, 18:25

2

Что-то уже начали делать?



0



0 / 0 / 0

Регистрация: 18.02.2017

Сообщений: 4

24.03.2017, 14:23

 [ТС]

3

Дело в том что я даже не знаю с чего начать, я с vba только начал знакомство



0



es geht mir gut

11264 / 4746 / 1183

Регистрация: 27.07.2011

Сообщений: 11,437

24.03.2017, 15:20

4

Цитата
Сообщение от Vladimir287
Посмотреть сообщение

Есть файл на Листе1 задаю шапку в первой строке

Ну вот файл-то у Вас уже есть?



0



aequit

223 / 134 / 45

Регистрация: 08.09.2012

Сообщений: 283

Записей в блоге: 1

24.03.2017, 15:46

5

Цитата
Сообщение от Vladimir287
Посмотреть сообщение

я даже не знаю с чего начать

С Уокенбаха, «Профессиональное программирование на VBA». Или не пропускать лекции и слушать преподавателя, который Вам такие задания даёт Как потом работу искать, и, главное — работать?
И научитесь различать «шапку» и имя файла…

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Sub абырвалг()
    Dim sFolder As String
    Dim sFiles As String
    Dim arr() As String
    Dim iFls As Integer
    Dim sFilesShablon As String
    
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = False Then Exit Sub
        sFolder = .SelectedItems(1)
    End With
   
    sFilesShablon = Trim(Sheets(1).Range("A1"))
    sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator)
    sFiles = Dir(sFolder & "*" & sFilesShablon & "*.xls*")
    iFls = 0
    ReDim arr(iFls)
    Do While sFiles <> ""
        ReDim Preserve arr(iFls)
        arr(iFls) = sFolder & sFiles
        sFiles = Dir
        iFls = iFls + 1
    Loop
    For iFls = 0 To UBound(arr)
        Sheets(2).Cells(iFls + 1, 1) = arr(iFls)
    Next iFls
    Sheets(2).Activate
End Sub

Вложения

Тип файла: xls Files345.xls (40.5 Кб, 48 просмотров)



0



Функция VBA для получения списка файлов из папки, с учётом выбранной глубины поиска в подпапках

Внимание: если требуется, чтобы поиск не зависел от регистра символов в маске файла (к примеру, обнаруживались не только файлы .TXT, но и .txt и .Txt), поставьте первой строкой в модуле эту директиву:
Option Compare Text

Пример в файле FilenamesCollection.xls выводит список файлов на чистый лист новой книги (формируя заголовки)

Пример в файле FilenamesCollectionEx.xls более функционален — он, помимо списка файлов из папки, отображает размер файла, и дату его создания, а также формирует в ячейках гиперссылки на найденные файлы. Вывод списка производится на лист запуска, параметры поиска файлов задаются в ячейках листа (см. скриншот)

ПРИМЕЧАНИЕ: Если вы выводите на лист список имен файлов картинок (изображений), то при помощи этой надстройки вы сможете вставить сами картинки в ячейки соседнего столбца (или в примечания к этим ячейкам)

Function FilenamesCollection(ByVal FolderPath As String, Optional ByVal Mask As String = «», _
                             Optional ByVal SearchDeep As Long = 999) As Collection
    ‘ Получает в качестве параметра путь к папке FolderPath,
   ‘ маску имени искомых файлов Mask (будут отобраны только файлы с такой маской/расширением)
   ‘ и глубину поиска SearchDeep в подпапках (если SearchDeep=1, то подпапки не просматриваются).
   ‘ Возвращает коллекцию, содержащую полные пути найденных файлов
   ‘ (применяется рекурсивный вызов процедуры GetAllFileNamesUsingFSO)

    Set FilenamesCollection = New Collection    ‘ создаём пустую коллекцию
   Set FSO = CreateObject(«Scripting.FileSystemObject»)    ‘ создаём экземпляр FileSystemObject
   GetAllFileNamesUsingFSO FolderPath, Mask, FSO, FilenamesCollection, SearchDeep ‘ поиск
   Set FSO = Nothing: Application.StatusBar = False    ‘ очистка строки состояния Excel
End Function

Function GetAllFileNamesUsingFSO(ByVal FolderPath As String, ByVal Mask As String, ByRef FSO, _
                                 ByRef FileNamesColl As Collection, ByVal SearchDeep As Long)
    ‘ перебирает все файлы и подпапки в папке FolderPath, используя объект FSO
   ‘ перебор папок осуществляется в том случае, если SearchDeep > 1
   ‘ добавляет пути найденных файлов в коллекцию FileNamesColl
   On Error Resume Next: Set curfold = FSO.GetFolder(FolderPath)
    If Not curfold Is Nothing Then    ‘ если удалось получить доступ к папке

        ‘ раскомментируйте эту строку для вывода пути к просматриваемой
       ‘ в текущий момент папке в строку состояния Excel
       ‘ Application.StatusBar = «Поиск в папке: » & FolderPath

        For Each fil In curfold.Files    ‘ перебираем все файлы в папке FolderPath
           If fil.Name Like «*» & Mask Then FileNamesColl.Add fil.Path
        Next
        SearchDeep = SearchDeep — 1    ‘ уменьшаем глубину поиска в подпапках
       If SearchDeep Then    ‘ если надо искать глубже
           For Each sfol In curfold.SubFolders    ‘ перебираем все подпапки в папке FolderPath
               GetAllFileNamesUsingFSO sfol.Path, Mask, FSO, FileNamesColl, SearchDeep
            Next
        End If
        Set fil = Nothing: Set curfold = Nothing    ‘ очищаем переменные
   End If
End Function

Этот код позволяет осуществить поиск нужных файлов в выбранной папке (включая подпапки), и выводит полученный список файлов на лист книги Excel:

Sub ПримерИспользованияФункции_FilenamesCollection()
    ‘ Ищем на рабочем столе все файлы TXT, и выводим на лист список их имён.
   ‘ Просматриваются папки с глубиной вложения не более трёх.

    Dim coll As Collection, ПутьКПапке As String
    ‘ получаем путь к папке РАБОЧИЙ СТОЛ
   ПутьКПапке = CreateObject(«WScript.Shell»).SpecialFolders(«Desktop»)
    ‘ считываем в колекцию coll нужные имена файлов
   Set coll = FilenamesCollection(ПутьКПапке, «.txt», 3)

    Application.ScreenUpdating = False    ‘ отключаем обновление экрана
   ‘ создаём новую книгу
   Dim sh As Worksheet: Set sh = Workbooks.Add.Worksheets(1)
    ‘ формируем заголовки таблицы
   With sh.Range(«a1»).Resize(, 3)
        .Value = Array(«№», «Имя файла», «Полный путь»)
        .Font.Bold = True: .Interior.ColorIndex = 17
    End With

    ‘ выводим результаты на лист
   For i = 1 To coll.Count ‘ перебираем все элементы коллекции, содержащей пути к файлам
       sh.Range(«a» & sh.Rows.Count).End(xlUp).Offset(1).Resize(, 3).Value = _
        Array(i, Dir(coll(i)), coll(i))    ‘ выводим на лист очередную строку
       DoEvents    ‘ временно передаём управление ОС
   Next
    sh.Range(«a:c»).EntireColumn.AutoFit    ‘ автоподбор ширины столбцов
   [a2].Activate: ActiveWindow.FreezePanes = True ‘ закрепляем первую строку листа
End Sub

Ещё один пример использования:

Sub ЗагрузкаСпискаФайлов()
    ‘ Ищем файлы в заданной папке по заданной маске,
   ‘ и выводим на лист список их параметров.
   ‘ Просматриваются папки с заданной глубиной вложения.

    Dim coll As Collection, ПутьКПапке$, МаскаПоиска$, ГлубинаПоиска%

    ПутьКПапке$ = [c1]    ‘ берём из ячейки c1
   МаскаПоиска$ = [c2]    ‘ берём из ячейки c2
   ГлубинаПоиска% = Val([c3])    ‘ берём из ячейки c3
   If ГлубинаПоиска% = 0 Then ГлубинаПоиска% = 999    ‘ без ограничения по глубине

    ‘ считываем в колекцию coll нужные имена файлов
   Set coll = FilenamesCollection(ПутьКПапке$, МаскаПоиска$, ГлубинаПоиска%)

    Application.ScreenUpdating = False    ‘ отключаем обновление экрана

    ‘ выводим результаты (список файлов, и их характеристик) на лист
   For i = 1 To coll.Count    ‘ перебираем все элементы коллекции, содержащей пути к файлам

        НомерФайла = i
        ПутьКФайлу = coll(i)
        ИмяФайла = Dir(ПутьКФайлу)
        ДатаСоздания = FileDateTime(ПутьКФайлу)
        РазмерФайла = FileLen(ПутьКФайлу)

        ‘ выводим на лист очередную строку
       Range(«a» & Rows.Count).End(xlUp).Offset(1).Resize(, 5).Value = _
        Array(НомерФайла, ИмяФайла, ПутьКФайлу, ДатаСоздания, РазмерФайла)

        ‘ если нужна гиперссылка на файл во втором столбце
       ActiveSheet.Hyperlinks.Add Range(«b» & Rows.Count).End(xlUp), ПутьКФайлу, «», _
                                   «Открыть файл» & vbNewLine & ИмяФайла

        DoEvents    ‘ временно передаём управление ОС
   Next
End Sub

Вот отсюда:
http://excelvba.ru/code/FilenamesCollection
там же качаются файлы примеров

Sub абырвалг()
    Dim sFolder As String
    Dim sFiles As String
    Dim arr() As String
    Dim iFls As Integer
    Dim sFilesShablon As String
    
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = False Then Exit Sub
        sFolder = .SelectedItems(1)
    End With
   
    sFilesShablon = Trim(Sheets(1).Range("A1"))
    sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator)
    sFiles = Dir(sFolder & "*" & sFilesShablon & "*.xls*")
    iFls = 0
    ReDim arr(iFls)
    Do While sFiles <> ""
        ReDim Preserve arr(iFls)
        arr(iFls) = sFolder & sFiles
        sFiles = Dir
        iFls = iFls + 1
    Loop
    For iFls = 0 To UBound(arr)
        Sheets(2).Cells(iFls + 1, 1) = arr(iFls)
    Next iFls
    Sheets(2).Activate
End Sub

Понравилась статья? Поделить с друзьями:
  • Vba excel список списков
  • Vba excel список связей
  • Vba excel список объектов
  • Vba excel список всех файлов в папке
  • Vba excel списка таблица