Avatar billede Nicolai Nybegynder
12. februar 2004 - 10:03 Der er 4 kommentarer og
1 løsning

Gennemse et helt folderhiraki for en bestemt filtype

Hej.

Jeg er ved at lave et lille stykke software, hvor jeg hvert minut ønsker at gennemse en folderstruktur (af helt ukendt opbygning) for alle .tiff og .jpeg filer. Det eneste jeg kender er navnet på den folder der indeholder hele folderstrukturen.

Jeg er interesseret i at få stien til de foldere der indeholder .tiff. eller .jpeg filer, da jeg skal behandle alt indhold i de foldere der indeholder den enkelte filtype.

Er der nogen der har lidt hjælp til dette?
Avatar billede martin_moth Mester
12. februar 2004 - 11:04 #1
Ja - søgemaskinen...
2 sek
Avatar billede martin_moth Mester
12. februar 2004 - 11:06 #2
Fx:

Smid en Filelist ind på din form, kald den FileList1, og brug følgende sub

Sub GetTextFiles()

Dim FS As FileSearch
Dim FilePath As String
Dim i As Integer
Dim filelist()
Const Filespec = "*.jpeg"  'udfyldes af bruger
FilePath = "C:\"          'udfyldes af bruger
Set FS = Application.FileSearch
With FS
  .LookIn = FilePath
  .Filename = Filespec
  .SearchSubFolders = True
  .Execute
  If .FoundFiles.Count = 0 Then
      MsgBox ("Ingen filer fundet")
      Exit Sub
  End If
  ReDim filelist(.FoundFiles.Count)
  For i = 1 To .FoundFiles.Count
    'filelist(i) = Split(.FoundFiles(i), Application.PathSeparator)
    filelist(i) = FoundFiles(i)
  Next
End With
End Sub
Avatar billede martin_moth Mester
12. februar 2004 - 11:08 #3
Hvis du ikke vil bruge Application.FileSearch, kan du lave din egen rekursive søgerutine - den kræver FSO, så du skal tilføje reference til MicroSoft Scripting Runtime:

Dim fso As Scripting.FileSystemObject
Set fso = New Scripting.FileSystemObject
FindFile pattern, fso.GetFolder(mappe)

Private Sub FindFile(pattern As String, folder As Scripting.folder)
Dim tmpFolder As Scripting.folder
Dim tmpFile As Scripting.File
  If folder.SubFolders.Count > 0 Then
    For Each tmpFolder In folder.SubFolders
      FindFile pattern, tmpFolder
    Next
  End If
  If folder.Files.Count > 0 Then
    For Each tmpFile In folder.Files
      If InStr(1, tmpFile.Name, pattern) Then
        Debug.Print tmpFile.Path & "\" & tmpFile.Name
      End If
    Next
  End If
End Sub


Mulighederne er mange :o)
Avatar billede l3kris Nybegynder
13. februar 2004 - 09:31 #4
Eller et api-call:

http://www.mentalis.org/apilist/FindFirstFile.shtml
med tilhørende eksempel, som naturligvis skal modereres en smule:
http://www.mentalis.org/apilist/FindFirstFile.shtml#
Avatar billede Nicolai Nybegynder
18. februar 2004 - 16:16 #5
Det virkede sku - tak for hjælpen Martin_moth!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester