Тема: Как получить "Список файлов в директории"?
Как получить Список файлов в директории (поддиректорий)
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Как получить "Список файлов в директории"?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Как получить Список файлов в директории (поддиректорий)
Вот помучай:
Sub Example_Dir() Dim MyFile, MyPath, MyName MyPath = "c:\" ' Set the path. MyName = Dir(MyPath, vbNormal) ' Retrieve the first entry. Do While MyName <> "" ' Start the loop. ' Ignore the current directory and the encompassing directory. If MyName <> "." And MyName <> ".." Then MsgBox (MyName) End If MyName = Dir ' Get next entry. Loop End Sub
> Lenich
СПАСИБО уважаемый. А в поддиректориях как посчитать файлы
А в поддиректориях как посчитать файлы
Вот сварганил побыстрому (только испольузет стек, поэтому НЕРЕКОМЕНДУЕТЬСЯ считать файлы в директории, где их больше 2000):
Public files_Count As Integer Public Count_Dir Sub Example_Dir() Dim MyPath files_Count = 0 Count_Dir = 0 MyPath = "C:\Мои документы\Объекты\" ' Указать путь. list_Dir (MyPath) 'вызываем подсчет кол-во директорий files_Count = files_Count + Count_File(MyPath) ' добавляем кол-во файлов из указанного пути MsgBox "Files: " & files_Count & " Directories: " & Count_Dir End Sub Public Function list_Dir(path_Dir As Variant) Dim MyName2 MyName2 = Dir(path_Dir, vbDirectory) Do While MyName2 <> "" 'Отсекаем директроии "." и ".." If MyName2 <> "." And MyName2 <> ".." And MyName2 <> "*.*" Then 'если это директория а не файл идем в неё If (GetAttr(path_Dir & MyName2) And vbDirectory) = vbDirectory Then ' MsgBox (path_Dir & MyName2) 'можно выводить названия каждой директории Count_Dir = Count_Dir + 1 'подстчет кол-во директорий 'MsgBox "This direct contain " & Count_File(path_Dir & MyName2 & "\") & " files" files_Count = files_Count + Count_File(path_Dir & MyName2 & "\") ' подсчет кол-во файлов list_Dir = list_Dir(path_Dir & MyName2 & "\") ' рекурися функции для подсчета поддиректорий. End If End If ' из-за рекурсии, приходиться каждый раз возвращаться к текущей папке MyName3 = MyName2 MyName2 = Dir(path_Dir, vbDirectory) Do While MyName2 <> MyName3 MyName2 = Dir Loop MyName2 = Dir Loop End Function Function Count_File(pathDir As Variant) As Integer Dim MyName1 Dim count As Integer count = 0 MyName1 = Dir(pathDir, vbNormal) ' Retrieve the first entry. Do While MyName1 <> "" ' Start the loop. count = count + 1 MyName1 = Dir ' Get next entry. Loop Count_File = count End Function
Прога не считает скрытые файлы. Проверить работу проги можно с помощью тогоже проводника.
Lenich.
Круто! Спасибо. Теперь постораюсь добить эту задачу под свои нужны. (надеюсь чегонибудь выйдет у меня) А нужно.
В указанной папке например с:\proj (и подпапках) открывать файлы DWG и во всех layout выполнять команду explode (или еще какую нибудь). и файлы сохранять.
Ок.
Вместо files_Count = files_Count + Count_File(path_Dir & MyName2 & "\") этой строки пиши вызов своей функции которая будет открывать чертеж, перебирать лайауты и выполнять твою команду, затем делать закрытие с сохранением.
Если что спрашивай.
files_Count = files_Count + Count_File(path_Dir & MyName2 & "\")
Сейчас анализируются (подсчитываются все файлы). Соответствеено нужно только *.DWG и директории.
MyPath = "C:\Мои документы\Объекты\*.dwg"
правильно?
Сначало открыть файл DWG, сделать с ним все что надо, потом сохранить.
Вместо подсчета файлов вызов функции: Your_Func (path_Dir & MyName2 & "\*.dwg")
И в ней (в функции) вместо "count = count + 1" записал бы операции над текущим файлом.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Как получить "Список файлов в директории"?
Форум работает на PunBB, при поддержке Informer Technologies, Inc