Avatar billede rasmus1234 Nybegynder
19. november 2009 - 09:18 Der er 6 kommentarer og
1 løsning

Folderlist i Excel, nu driller Office 2007

Martin_Moth har skrevet denne lille kode til mig, som trækker oversigt over filer ud til mig. MEN jeg vil gerne, at jeg kan vælge f.eks. c:\billeder...og så kommer alle undermapper også med + at filnavnet er hele stien (incl. c:\biller\...)

Jeg opretter spørgsmålet, fordi Office 2007 har lukket for Applikation.Filesearch, og dermed virker mine gamle makroer ikke. Dog virker denne løsning dog ift. de brugte applikationer, så jeg tænkte at der kunne blive skrevet videre på denne. Alternativt vil jeg selvfølgelig foretrække min oprindelige makro, som kan ses her: http://www.eksperten.dk/spm/565318

Sub Mylist()
Dim FSO As Object
Dim Dir As Object
Dim Fil As Object
Dim i As Long
Dim sti As String
MsgBox "Dette er meget meget simpelt, med en beskeden indsats kunne programmet blive helt pænt med kanpper og andet gejl ;o)"
sti = InputBox("Indtast sti til folder (f.eks. 'C:\temp'", "Indtast sti", "C:\temp")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Dir = FSO.GetFolder(sti)
Set Fil = Dir.Files
i = 1
Cells(i, 1).Formula = "Filnavn"
Cells(i, 2).Formula = "Filstørrelse (byte)"
Cells(i, 3).Formula = "Fil oprettet dato"
For Each Fil In Dir.Files
  i = i + 1
  Cells(i, 1).Formula = Fil.Name
  Cells(i, 2).Formula = Fil.Size
  Cells(i, 3).Formula = Fil.DateCreated
Next Fil
End Sub
Avatar billede tjacob Juniormester
19. november 2009 - 12:37 #1
For at kunne få alle underniveauer med er du nødt til at lave en rekursiv funktion (en funktion der kalder sig selv i loops).

Her er et forslag:

Du skal køre Sub StartListing. Jeg har ændret input af mappe til at bruger selv vælger en mappe.

Sub StartListing()
   
    Dim FSO As New FileSystemObject
    Dim TopFolderName As String
    Dim TopFolderObj As Folder
    Dim objShell As Object
    Dim pRange As Range
    Set objShell = CreateObject("Shell.Application").BrowseForFolder(0&, "", &H200)
    If Not objShell Is Nothing Then TopFolderName = objShell.Self.Path
    Set objShell = Nothing
    If TopFolderName = "" Then Exit Sub
    Set TopFolderObj = FSO.GetFolder(TopFolderName)
    Set pRange = Range("A1")
    Call ListFiles(TopFolderObj, pRange)
   
    End Sub

Private Sub ListFiles(ByVal OfFolder As Folder, ByRef dstRange As Range)
   
    Dim SubFolder As Folder, sFile As File
    For Each sFile In OfFolder.Files
        dstRange.Value = sFile.Path
        Set dstRange = dstRange.Offset(0, 1)
        dstRange.Value = sFile.Size
        Set dstRange = dstRange.Offset(0, 1)
        dstRange.Value = sFile.DateCreated
        Set dstRange = dstRange.Offset(1, -2)
    Next sFile
    For Each SubFolder In OfFolder.SubFolders
        Call ListFiles(SubFolder, dstRange)
    Next SubFolder
   
End Sub
Avatar billede tjacob Juniormester
19. november 2009 - 12:44 #2
Hvis der er mange filer er det nok klogt at tilføje:

Application.ScreenUpdating = False og
Application.ScreenUpdating = True

I starten og slutningen af StartListing
Avatar billede rasmus1234 Nybegynder
20. november 2009 - 10:50 #3
Så har jeg testet den, og der er noget, som ikke virker...
"Private Sub ListFiles(ByVal OfFolder As Folder, ByRef dstRange As Range)" ???
Avatar billede tjacob Juniormester
20. november 2009 - 11:33 #4
OK, den virker fint hos mig.
Får du nogen fejlmeldinger?
Begge subs ligger i samme modul?
Avatar billede tjacob Juniormester
20. november 2009 - 12:00 #5
Her er mit regneark. Du kan sammenligne og se om der skulle være noget anderledes: http://www.gratisupload.dk/download/36356/
Avatar billede rasmus1234 Nybegynder
20. november 2009 - 12:12 #6
Super, det var meget bedre...ved ikke hvad der er gået galt.
Mange tak for hjælpen, sej udgave, bedre end den tidligere jeg havde.

Læg et svar.
Avatar billede tjacob Juniormester
20. november 2009 - 12:30 #7
OK, så tillader jeg mig at lægge et svar.......
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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