Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: files uit verschillende mappen laten weergeven als data  (gelezen 5414 keer)

0 leden en 1 gast bekijken dit topic.

Offline maikel81

  • Lid
  • *
  • Berichten: 10
  • Geslacht: Man
  • Hey, ik ben nieuw hier !
files uit verschillende mappen laten weergeven als data
« Gepost op: 28 juni 2023, 14:57:23 »
Goedemiddag,

Loop nu al eindje te zoeken, en onder het moto durf te vragen, stel ik het hier maar eens. Als ik ergens in de juiste richting raak ben ik al tevreden.
Ik (werk gerelateerd) klasseer de CMR's van mijn bedrijf digitaal per nummer in mappen ( startnummer - eindnummer) op onze server.
dit werkt , maar is niet overzichtelijk welke ik ontbreek en van welke chauffeur. nu zou ik willen dit in excel trekken om het vlotter te kunnen opvolgen.
ken wel wat van excel en ietsje van VBA maar toch lukt het mij niet om het goed te krijgen.
Wat ik wil is dat de er in de folders (kolom A) uit folderpad van de server ( beetje zoals verticaalzoeken) gezocht word naar pdf,s en dat de nummers van de pdf,s horizontaal worden weergegeven in  kolom E tem kolom AC (want CMR's worden ingescand volgens hun nummer en bewaard in hun hoofmap per boek
Als ik in  kolom A nieuwe boeken toevoeg zouden  deze ook als nieuwe map moeten worden aangemaakt op de server.
Het lukt mij om in folders te zoeken via VBA maar dan worden ze altijd verticaal getoond. wat ik ook probeer niks werkt zoals ik het zou willen

Iemand die mij kan helpen aan werkend VBA scriptje of ander manier is ook goed
 Alvast ne dikke merci


                                                         

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.183
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: files uit verschillende mappen laten weergeven als data
« Reactie #1 Gepost op: 28 juni 2023, 15:18:09 »
Hallo maikel81,

Welkom op Oplossing.be  :)

dit is zeker op te lossen, maar kan je niet best een (gestripte) versie met VBA die je al geschreven hebt aanhangen?

Daar zien we meer welke richting je op wilt, en waar er eventueel fouten in zitten.

Welke station letter gebruik je op de server en eventueel een mapnaam (maakt het gemakkelijker om voorbeelden te creëren.

:) SoftAid :)             

Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline maikel81

  • Lid
  • *
  • Berichten: 10
  • Geslacht: Man
  • Hey, ik ben nieuw hier !
Re: files uit verschillende mappen laten weergeven als data
« Reactie #2 Gepost op: 28 juni 2023, 15:36:14 »
Hey SoftAid

heb een (gestripte versie) erop gezet omdat hij met VBA er heel verknipt uit kwam :) je ziet anders niet meer wat het hoort te zijn.

maar dit is mn scriptje tot nu toe ( maar lukt mij niet om te kunnen zoeken vanaf kolom A en de files worden altijd verticaal getoond

Q:

Sub getfiles()

    Dim oFSO As Object
    Dim oFolder As Object
    Dim oFile As Object, sf
    Dim i As Integer, colFolders As New Collection, ws As Worksheet
   
    Set ws = ActiveSheet
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oFolder = oFSO.getfolder("\\OX-DC-DATA\Data\4-PRODUCTION\CMR ARCHIEF\2023\")
   
    colFolders.Add oFolder
   
    Do While colFolders.Count <> Range = A
        Set oFolder = colFolders(1)
        colFolders.Remove 1
   
        For Each oFile In oFolder.Files
            If oFile.DateLastModified > Now - 7 Then
                ws.Cells(i + 1, 2) = oFile.Name
                i = i + 1
            End If
        Next oFile

       
        For Each sf In oFolder.subfolders
            colFolders.Add sf
        Next sf
    Loop

End Sub

UQ

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.183
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: files uit verschillende mappen laten weergeven als data
« Reactie #3 Gepost op: 28 juni 2023, 16:30:51 »
Hallo maike81,

Code kan je tussen tags zetten met "code selecteren + de knop # (in onze knoppenbalk)"

Bij deze loop vraag je om telkens een nieuwe rij te kiezen, in plaats van een nieuwe kolom ....

ws.Cells(i + 1, 2) = oFile.Name
RC : Row-Column, remember  ;)

:) SoftAid :)             



Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline maikel81

  • Lid
  • *
  • Berichten: 10
  • Geslacht: Man
  • Hey, ik ben nieuw hier !
Re: files uit verschillende mappen laten weergeven als data
« Reactie #4 Gepost op: 28 juni 2023, 16:43:32 »
zal aan mij liggen vrees ik maar als ik Column toevoeg ( en denk dat hij moet starten op de 5de) doet hij niks, krijg fout melding.
For Each oFile In oFolder.Files
            If oFile.DateLastModified > Now - 7 Then
                ws.Cells(Column 5) + 1, 2) = oFile.Name
                i = i + 1
            End If
        Next oFile

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.183
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: files uit verschillende mappen laten weergeven als data
« Reactie #5 Gepost op: 28 juni 2023, 16:59:26 »
Hallo maikel81,

Wat ik bedoelde: in woorden:  Worksheets.Cells(Rows, Columns + variabele i) = variabele oFile.name

in code:

For Each oFile In oFolder.Files
            If oFile.DateLastModified > Now - 7 Then
                ws.Cells(2, i +5) = oFile.Name  'omdat je i geen waarde geeft op voorhand, veronderstel ik dat deze 0 is in het begin van je oFile-loop
                i = i + 1
            End If
        Next oFile

Je kan ook i = 5 zetten in je code, dan wordt het duidelijker:

For Each oFile In oFolder.Files
             i = 5
            If oFile.DateLastModified > Now - 7 Then
                ws.Cells(2, i ) = oFile.Name 
                i = i + 1
            End If
        Next oFile


:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: files uit verschillende mappen laten weergeven als data
« Reactie #6 Gepost op: 28 juni 2023, 19:19:17 »
Probeer deze eens

Sub jec()
Dim a
a = Split(CreateObject("wscript.shell").Exec("cmd /c Dir ""\\OX-DC-DATA\Data\4-PRODUCTION\CMR ARCHIEF\2023\*.pdf ""/b/o:d/s").StdOut.ReadAll, vbCrLf)
Cells(2, 5).Resize(, UBound(a)) = a
End Sub

Offline JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: files uit verschillende mappen laten weergeven als data
« Reactie #7 Gepost op: 28 juni 2023, 19:34:16 »
En anders hier een recursieve oplossing. De macro "jec" moet je runnen om het te starten

Dim oFSO As Object, ar(2000), x As Long

Dim oFSO As Object, ar(2000), x As Long

Sub jec()
 Set oFSO = CreateObject("Scripting.FileSystemObject")
 GetFiles "\\OX-DC-DATA\Data\4-PRODUCTION\CMR ARCHIEF\2023\"
 Set oFSO = Nothing
 If x Then Cells(2, 2).Resize(, x) = ar
 Erase ar: x = 0
End Sub

Sub GetFiles(xFold)
 Dim Obj As Object
 If Right(xFold, 1) <> "\" Then xFold = xFold & "\"
 With oFSO.GetFolder(xFold)
    For Each Obj In .Files
      If Obj.Name Like "*.pdf" Then
         If Obj.DateLastModified > Now - 7 Then
            ar(x) = Obj.Name
            x = x + 1
         End If
      End If
    Next
    For Each Obj In .SubFolders
       GetFiles xFold & Obj.Name
    Next
 End With
End Sub

Offline maikel81

  • Lid
  • *
  • Berichten: 10
  • Geslacht: Man
  • Hey, ik ben nieuw hier !
Re: files uit verschillende mappen laten weergeven als data
« Reactie #8 Gepost op: 29 juni 2023, 07:18:38 »
Hallo maikel81,

Wat ik bedoelde: in woorden:  Worksheets.Cells(Rows, Columns + variabele i) = variabele oFile.name

in code:

For Each oFile In oFolder.Files
            If oFile.DateLastModified > Now - 7 Then
                ws.Cells(2, i +5) = oFile.Name  'omdat je i geen waarde geeft op voorhand, veronderstel ik dat deze 0 is in het begin van je oFile-loop
                i = i + 1
            End If
        Next oFile

Je kan ook i = 5 zetten in je code, dan wordt het duidelijker:

For Each oFile In oFolder.Files
             i = 5
            If oFile.DateLastModified > Now - 7 Then
                ws.Cells(2, i ) = oFile.Name 
                i = i + 1
            End If
        Next oFile


:) SoftAid :)             

Hij zet alle waarden in veld 5 :(

Offline maikel81

  • Lid
  • *
  • Berichten: 10
  • Geslacht: Man
  • Hey, ik ben nieuw hier !
Re: files uit verschillende mappen laten weergeven als data
« Reactie #9 Gepost op: 29 juni 2023, 07:22:49 »
En anders hier een recursieve oplossing. De macro "jec" moet je runnen om het te starten

Dim oFSO As Object, ar(2000), x As Long

Dim oFSO As Object, ar(2000), x As Long

Sub jec()
 Set oFSO = CreateObject("Scripting.FileSystemObject")
 GetFiles "\\OX-DC-DATA\Data\4-PRODUCTION\CMR ARCHIEF\2023\"
 Set oFSO = Nothing
 If x Then Cells(2, 2).Resize(, x) = ar
 Erase ar: x = 0
End Sub

Sub GetFiles(xFold)
 Dim Obj As Object
 If Right(xFold, 1) <> "\" Then xFold = xFold & "\"
 With oFSO.GetFolder(xFold)
    For Each Obj In .Files
      If Obj.Name Like "*.pdf" Then
         If Obj.DateLastModified > Now - 7 Then
            ar(x) = Obj.Name
            x = x + 1
         End If
      End If
    Next
    For Each Obj In .SubFolders
       GetFiles xFold & Obj.Name
    Next
 End With
End Sub

Dank je JEC, deze zet wel alles netjes op een rij achter elkaar :) maar helaas houd hij geen rekening met kolom A en toont hij er veel meer ( maximaal zou hij er 25 mogen tonen) inhoud van 1 boek.
en hoe krijg ik dit werken voor elke lijn, waar er een boek is toegevoegd op kolom A?


Offline JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: files uit verschillende mappen laten weergeven als data
« Reactie #10 Gepost op: 29 juni 2023, 07:36:43 »
Is je aangegeven pad in je code de hoofdfolder en zijn de aangegeven folders in kolom A alllemaal subfolders? Heten deze letterlijk xxxxxx-xxxxxx? Dus met streepje ertussen

Offline maikel81

  • Lid
  • *
  • Berichten: 10
  • Geslacht: Man
  • Hey, ik ben nieuw hier !
Re: files uit verschillende mappen laten weergeven als data
« Reactie #11 Gepost op: 29 juni 2023, 08:40:16 »
Ja mijn DIR is hoofdmap en Kolom A zijn allemaal sub mappen in dat formaat 8cijfers spatie - spatie 8cijfers

Offline JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: files uit verschillende mappen laten weergeven als data
« Reactie #12 Gepost op: 29 juni 2023, 23:11:47 »
Probeer dan deze eens.
Bij ontbreken van de folder wordt deze aangemaakt.

Sub jec()
 Dim ar, xp, it, i As Long
 ar = Range("A2", Range("A" & Rows.Count).End(xlUp))
 ReDim sq(UBound(ar), 500)
 
 With CreateObject("Scripting.FileSystemObject")
   For i = 1 To UBound(ar)
      xp = "\\OX-DC-DATA\Data\4-PRODUCTION\CMR ARCHIEF\2023\" & ar(i, 1) & "\"
      If Not .FolderExists(xp) Then .createfolder xp
      For Each it In .getfolder(xp).Files
         If it.Name Like "*.pdf" And it.DateLastModified > Date - 7 Then
            sq(i - 1, x) = Split(it.Name, ".pdf")(0)
            x = x + 1
         End If
      Next
      x = 0
   Next
 End With
 Range("E2").Resize(UBound(ar), 25) = sq
End Sub

Offline maikel81

  • Lid
  • *
  • Berichten: 10
  • Geslacht: Man
  • Hey, ik ben nieuw hier !
Re: files uit verschillende mappen laten weergeven als data
« Reactie #13 Gepost op: 30 juni 2023, 07:58:39 »
Meneer JEC, u bent een krak jongen! Super de luxe gedaan van u. Werkt zoals het hoort. heb wel de range en zo wat aangepast want file is beetje veranderd. en die stomme datum serieus dagen terug gezet, mag zelfs eruit van mijn part. want niet alle chauffeurs zijn even rap om hun cmrs binnen te brengen :/

Maar kan ik ook de folder als link krijgen in excel, zodat als ik iets moet opzoeken qua CMR dat ik direct naar de folder gaan en ook direct eventueel nieuwe CMRs kan bij zetten.
ik weet hoe je een hyperlink zet, maar niet via VBA en wil ook niet je scriptje verprutsen :)

En heel misschien nog iets, maar denk niet dat het haalbaar is...
hij somt heel netjes de bestanden op, maar kan hij ook de cellen waar er een ontbreekt in de logische volgorde ook blank laten? zodat direct opvalt welke ik te kort heb? of vraag ik nu iets totaal onrealistisch?

heb voor de zekerheid nog eens mijn file bijgevoegd

in ieder geval al ne dikke merci voor u werk ( en ook aan iedereen die wou meedenken in dit verhaal)

Offline JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: files uit verschillende mappen laten weergeven als data
« Reactie #14 Gepost op: 30 juni 2023, 08:02:37 »
Graag gedaan hoor. ;)
Wat je vraagt kan allemaal. Na het weekend heb ik misschien weer even tijd. Druk druk!


 


www.combell.com