Avatar billede KurtOA Praktikant
25. november 2012 - 20:05 Der er 5 kommentarer og
1 løsning

Liste filer på diskdrev vha vba

Hej. Jeg har fundet nedenstående kodestump på Eksperten.

Er der mon nogen der kan hjælpe med at udvide den så den også lister filer i underliggende biblioteker?

mvh Kurt O-A

Sub listFiles()

Dim File_path As String, sFile As Variant, aFiles() As String, i As Integer
File_path = "c:\temp\*"
sFile = Dir(File_path)
Do Until sFile = ""
    i = i + 1
    ReDim Preserve aFiles(i)
    aFiles(i) = sFile
    sFile = Dir()
Loop
' Check if all files are there (for now in imediate window)
For Row_No = 1 To i
    Debug.Print aFiles(Row_No)
Next

End Sub
Avatar billede supertekst Ekspert
25. november 2012 - 22:27 #1
Prøv at se http://www.eksperten.dk/spm/916623 #9 - ganske vist lidt andet formål - men underliggende mapper findes via resursiv metode.
Avatar billede supertekst Ekspert
28. november 2012 - 14:28 #2
Kunne det bruges?
Avatar billede KurtOA Praktikant
28. november 2012 - 15:09 #3
Hej Supertekst.

Koden du henvisser til er lidt mere "langhåret" end jeg regnede med - så jeg er stadig ved at "gnave mig igennem det".
Der er vist flere ting jeg kan lære undervejs ;-)

Jeg når vist desværre ikke så meget de næste par dage (arbejdsramt)  - men satser på "studietid" i weekenden.

100 tak foreløbig ;-)

mvh Kurt O-A
Avatar billede supertekst Ekspert
28. november 2012 - 15:18 #4
Hej KurtOA

Ja - nu var formålet også lidt anderledes - men ellers giver du blot signal - så finder vi ud af det.

og selv tak..
Avatar billede KurtOA Praktikant
06. december 2012 - 22:08 #5
Har nu fundet en løsning på denne recursive søgemetode så alle undermapper ud fra en given rodmappe gennemsøges for en bestemt filtype:


Sub FileSearch()

c = 0
Dim sStartPath As String
Dim sWhat As String
Dim result As String


sStartPath = "C:\system\" 'Where?
sWhat = "*.xls" 'What?
result = DigIn(sStartPath, sWhat) 'First step
MsgBox result
MsgBox c


End Sub



Function DigIn(sPath As String, sWhat As String) As String



Dim fs As New FileSystemObject
Dim dDirs As Folder
Dim dDir As Folder
Dim fFile As File

Set dDirs = fs.GetFolder(sPath)


For Each dDir In dDirs.SubFolders
    DigIn = DigIn(dDir.Path, sWhat) ' Here is the recursion
Next
For Each fFile In dDirs.Files
        c = c + 1
    If fFile.ShortName = sWhat Then ' File checking
        DigIn = fFile.Path
        Exit Function ' You can remove that if you don't want to wait for all files
    End If
Next

End Function

Supertekst: Vil du ikke lægge et svar - for jeg ender med at bruge en blanding af dit forslag og denne i min løsning.
Og så på baggrund af dit forslag fået endnu bedre forståelse af VBA.

mvh & tak Kurt
Avatar billede supertekst Ekspert
06. december 2012 - 23:07 #6
Selv tak - fint det lykkedes..
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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