Bestandsnamen in map uitlezen

Bespreek het rekenblad
Atwist
Berichten: 52
Lid geworden op: ma sep 14, 2015 8:56 am

Bestandsnamen in map uitlezen

Bericht door Atwist »

Bestaat er een mogelijkheid om bestandsnamen in een bepaalde map uit te lezen??

Zo ja met welke macro opdracht kan ik dit het beste maken.

Dus ik wil in mijn PDF map kijken welke pdf er in die map staat zodat er een lijst wordt gemaakt deze op het werkblad komen te staan zodat ik dan de lijst kan uitprinten.

Ik hoop dat ik het duidelijk heb uitgelegd anders hoor ik het wel
Andreas

LibreOffice 4.4.7.2. op Linux Mint en zeker geen Versie 5 meer.
eremmel
Berichten: 670
Lid geworden op: di sep 01, 2009 10:11 am
Locatie: Barneveld, Nederland

Re: Bestandsnamen in map uitlezen

Bericht door eremmel »

Als dit niet zo heel vaak hoeft te gebeuren zou je ook kunnen doen:

Start:
cmd.exe
met het commando CD naar de juiste map gaan:
CD C:\Users\naam\......
Lijstje genereren:
DIR /B *.pdf >bestandslijst.csv
Bestandje openen in Writer of Calc

Macro's zijn echt complex, advies is niet aan beginnen.
W11 21H2 (build 22000), LO 7.4.1.2(x64)
Het is Microsoft marketing die laat geloven dat computers geschikt zijn voor niet technici
Atwist
Berichten: 52
Lid geworden op: ma sep 14, 2015 8:56 am

Re: Bestandsnamen in map uitlezen

Bericht door Atwist »

Ik had net deze Excel macro gevonden, nu nog omzetten naar OOo vba.

Code: Selecteer alles

Sub GetFiles()
    Dim fileList() As String
    Dim fName As String
    Dim I As Integer, X As Integer
    fName = Dir("D:\Mijn Documenten\mijn map\" & "*.pdf")
    While fName <> ""
        I = I + 1
        ReDim Preserve fileList(1 To I)
        fileList(I) = fName
         fName = Dir()
    Wend
    If I = 0 Then
        MsgBox "Geen bestanden gevonden"
        Exit Sub
    Else
        Columns(1).ClearContents
        For X = 1 To I
            Cells(X, 1) = fileList(X)
        Next
    End If
End Sub
Andreas

LibreOffice 4.4.7.2. op Linux Mint en zeker geen Versie 5 meer.
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: Bestandsnamen in map uitlezen

Bericht door RPG »

Hallo

Misschien dat dit je helpt.

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
Atwist
Berichten: 52
Lid geworden op: ma sep 14, 2015 8:56 am

Re: Bestandsnamen in map uitlezen

Bericht door Atwist »

Hallo Romke,

Dank voor de tip, heb daar wel veel moeten zoek maar dit heb ik gevonden.

Code: Selecteer alles

    Sub ListSubDirectoriesOrFiles
    Dim url,iAns,a,DorF,oDoc,oSheet,Dname,Col,Row
    oDoc = ThisComponent
    oSheet = oDoc.Sheets(0) 'Sheet1
    url = getFolder("List folder content",)
    a = "List the names of what?" & Chr(13) & "Yes = sub-directories" & Chr(13) & "No = files"
    iAns = MsgBox(a,4,"List what?")
    If iAns = 7 then
       DorF = 0
    Else DorF = 16
    EndIf
    ext = "*"
    If DorF = 0 then
       ext1 = InputBox("Enter the desired file type extention. Examples: odt for Writer files or * for all files."
          If ext1 = "" then MsgBox("Cancel pressed. Quitting.") : End
       ext = ext & "." & ext1
    EndIf
    InitialCell:
    Cname = InputBox("Enter the name of the cell that should recieve the initial name, e.g., A2.","Start list where?")
    If Cname = "" then MsgBox("No entry made. Quitting.") : End
    On Error goto E1
    oCell = oSheet.getCellRangeByName(Cname)
    a = "List should go in what direction?" & Chr(13) & "Yes = down" & Chr(13) & "No = across"
    iAns = MsgBox(a,4,"List down or across?")
    If iAns = 7 then
       DA = "A"
    Else DA = "D"
    EndIf   
    url = url & "/" & ext
    Col = oCell.CellAddress.Column
    Row = oCell.CellAddress.Row
    Dname = Dir(url,DorF)
    Do While Dname <> ""
       If Dname <> "." And Dname <> ".." then
          oCell = oSheet.GetCellByPosition(Col,Row)
          oCell.String = Dname
          If DA = "D" then
             Row = Row + 1
          Else Col = Col +1
          EndIf
       EndIf
       Dname = Dir
    Loop
    MsgBox "Done"
    End
    E1:
    MsgBox "'" & Cname & "' is an illegal cell name. Try again." : Goto InitialCell
    End Sub

    Function getFolder(sTitle AS String, optional sInitDir) AS String
       oPicker = CreateUnoService("com.sun.star.ui.dialogs.FolderPicker")
       oPicker.setTitle(sTitle)
       if not ismissing(sInitDir) then oPicker.setDisplayDirectory(sInitDir)
       if oPicker.execute() then getFolder = oPicker.getDirectory()
    End Function


Alleen het "across" werkt goed maar het "down" niet, dit ga ik proberen te vinden.

Tip zijn natuurlijk altijd welkom. :super:
Andreas

LibreOffice 4.4.7.2. op Linux Mint en zeker geen Versie 5 meer.
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: Bestandsnamen in map uitlezen

Bericht door RPG »

Hallo

Het is niet aan mij om iets negatiefs te zeggen over de door jouw gevonden code. Wel weet ik dat het verstandig is om zo kort mogelijk bij de API te blijven wanneer je wilt programmeren. Dat betekent dat je moet gaan studeren in de boeken die je vast daar ook wel gevonden hebt.

In de zoek actie stond Filepicker centraal dat is de service die gaat over wat je wilt. Wanneer je niet gebruik wilt maken van de mogelijkheden van de API en alles wat OpenOffice biedt dan is het misschien verstandig om een ander programma te gebruiken dan OOo. Ik ben niet jouw debugger

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
Atwist
Berichten: 52
Lid geworden op: ma sep 14, 2015 8:56 am

Re: Bestandsnamen in map uitlezen

Bericht door Atwist »

Ik geloof dat wij elkaar steeds verkeerd begrijpen :crazy:
Ik ben niet jouw debugger
Jij hoeft ook niet mijn debugger te zijn.

Er staat duidelijk
Alleen het "across" werkt goed maar het "down" niet, dit ga ik proberen te vinden.
Verder even goede vrienden hoor. :super:
Andreas

LibreOffice 4.4.7.2. op Linux Mint en zeker geen Versie 5 meer.
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: Bestandsnamen in map uitlezen

Bericht door RPG »

Hallo

Voor anderen is het misschien wel goed te weten waar de code vandaan komt. Ik denk dat dit de link is.

Aan het eind geeft Villeroy een voorbeeld met uitleg. Ik heb het niet geprobeerd. Maar voorbeelden en uitleg van Villeroy zijn in het algemeen het beste wat je kunt krijgen.

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
Atwist
Berichten: 52
Lid geworden op: ma sep 14, 2015 8:56 am

Re: Bestandsnamen in map uitlezen

Bericht door Atwist »

Inderdaad dat is het.

Had inderdaad de link er wel bij kunnen zetten.
Andreas

LibreOffice 4.4.7.2. op Linux Mint en zeker geen Versie 5 meer.
Plaats reactie