Hét vraag- en antwoordplatform van Nederland

Kan ik een lijst in Excel maken van alle filenamen in een bepaalde map?

Ik heb een map met ruim 6000 epub's (digitale boeken voor de E-reader) en wil hiervan graag een complete lijst hebben in een Excel document, zonder dat ik ruim 6000 maal alle schrijvers en titelnamen moet overtikken. Is dit mogelijk en zo ja, hoe doe ik dit dan?

Toegevoegd na 1 minuut:
De filenamen beginnen allemaal met de naam van de schrijver en dan de titel van het boek.

bv: Stephen King - Desperation.epub

Verwijderde gebruiker
9 jaar geleden
in: Software
6K

Heb je meer informatie nodig om de vraag te beantwoorden? Reageer dan hier.

Het beste antwoord

Ik zou het als volgt doen. In onderstaand voorbeeld ga ik ervan uit dat jouw boeken in de map D:\vanalles\nogwat\boeken staan.

1. Open een opdrachtregel. Dat kan door de Windows-knop en de R in te drukken (tegelijk, zoals je ook Control-R zou indrukken), dan cmd te typen, en dan op Enter te drukken.

2. Type in:
D:
en dan Enter.

3. Type in:
cd \vanalles\nogwat\boeken
en dan Enter.

4. Type in:
dir *.epub >lijst.txt
en dan Enter.

5. Type in:
notepad lijst.txt
en dan Enter.

6. Je zit nu in Kladblok. Kopieer alle regels waarin je boeken staan (dat zijn alle regels behalve een paar bovenste en onderste regels) van Kladblok naar Excel. Kopieer ze bijvoorbeeld naar kolom A van een leeg werkblad.

Nu ga ik ervan uit dat jouw gekopieerde tekst in de cellen A1 t/m A6000 (of zoiets) staat.

8. Zet in cel B1 de volgende formule:
=DEEL(A1; 30; LENGTE(A1)-34)
Je moet hier even spelen met de getallen 30 en 34. Maak eerst die 30 groter of kleiner, zodat het resultaat in cel B1 met de naam van de schrijver begint. Maak dan de 34 groter of kleiner om nog precies de hele titel in cel B1 te krijgen; ik vermoed dat dat tweede getal 4 groter moet zijn dan het eerste getal (in mijn voorbeeld dus 34, wat 4 meer is dan 30). Met wat experimenteren kom je er zo uit.

9. Zet daarna in cel C1 de volgende formule:
=VIND(" - "; B1)

10. Zet nu in cel D1 de volgende formule:
=LINKS(B1; C1-1)
Cel D1 zal nu de auteur bevatten.

11. Zet nu in cel E1 de volgende formule:
=DEEL(B1; C1+3; LENGTE(B1)-C1-7)
Cel E1 zal nu de titel bevatten.

12. Kopieer nu de formules in cellen B1 t/m E1 naar alle volgende regels.

Kolom D zal nu telkens de auteur bevatten, kolom E de titel.
 

Toegevoegd na 5 minuten:
 
Ik zit nog wat te experimenteren, en daarbij ontdek ik een manier om één stap over te slaan.

Als je in stap 4 het volgende intypt:
dir /b *.epub >lijst.txt

dan kun je in Kladblok *alle* regels kopiëren omdat de nutteloze bovenste en onderste regels er nu niet meer zijn.

Vervolgens kun je *alle* regels van Kladblok direct naar kolom B van je spreadsheet kopiëren. Je kunt nu de ingewikkelde stap 8 overslaan, en direct verdergaan met stap 9.
 
(Lees meer...)
Cryofiel
9 jaar geleden
Verwijderde gebruiker
9 jaar geleden
Ik moet zo weg, maar morgen ga ik het uitproberen. Wat een genot om al die ouwe DOS commando's weer terug te zien. Denk dat het wel gaat lukken. Laat het je wel weten.
bamibal
9 jaar geleden
+
Het kan nog makkelijker, door lijst.csv te gebruiken, in plaats van lijst.txt. Ook kun je eenvoudiger de auteur en titel splitsen door de optie "tekst naar kolommen" op het lint Gegevens te gebruiken.
ItisILeClerc
9 jaar geleden
er is sw die dat gewoon voor je kan doen, kwestie van even zoeken
Castle
9 jaar geleden
+ mooie oplosssing.
Cryofiel
9 jaar geleden
@bamibal, dat realiseerde ik me ook - maar hoe die optie precies werkt hangt vaak af van je eigen regio-instellingen. Daarom heb ik een manier beschreven die niet zo gek veel ingewikkelder is, maar die een wat hogere kans van slagen heeft.
Verwijderde gebruiker
9 jaar geleden
Tot stap 9 ging het goed. Ik heb nu in kolom B de complete lijst, heel netjes. In principe was dat ook mijn vraag, maar toen ik zag dat je de "schrijver" en "titel" ook van elkaar kan scheiden, leek me dat helemaal gaaf. Alleen wilde het (tot nu toe) niet lukken. Ik heb de formules die je me hebt gegeven voor C1, D1 en E1 ingetikt en krijg in alle 3 de cellen het volgende te zien: #NAAM?
Enig idee wat ik fout doe?
Cryofiel
9 jaar geleden
Verander de formule van stap 9 in de volgende: =VIND.ALLES(" - "; B1)
Verwijderde gebruiker
9 jaar geleden
Hartstikke bedankt. Het heeft allemaal gewerkt. Hier ben ik echt blij mee... :)

Andere antwoorden (1)

je kunt een simpel stukje VBA code toevoegen en dit linken aan een knop op je werkblad. Daarmee kun je het bestand automatisch bijwerken zonder omweg via kopieer en plakacties.

Sub Example1()
Dim objFSO As Object
Dim objFolder As Object
Dim objFile As Object
Dim i As Integer

'Create an instance of the FileSystemObject
Set objFSO = CreateObject("Scripting.FileSystemObject")
'Get the folder object
Set objFolder = objFSO.GetFolder("jouw driveletter:jouwfoldernaam")
i = 1
'loops through each file in the directory and prints their names and path
For Each objFile In objFolder.Files
'print file name
Cells(i + 1, 1) = objFile.Name
'print file path
Cells(i + 1, 2) = objFile.Path
i = i + 1
Next objFile
End Sub
(Lees meer...)
paulus811
9 jaar geleden
Verwijderde gebruiker
9 jaar geleden
Het zal zeker wel werken, maar heb geen idee waar je het over hebt. VBA code heb ik nog nooit van gehoord en weet dus ook niet hoe het werkt. Ik denk dat ik het met het antwoord van Cryofiel wel ga redden. Toch bedankt voor de moeite.
+1
paulus811
9 jaar geleden
Dank je Almighty en ik snap dat het je 'overvalt' als je nog niet eerder met VBA hebt gewerkt.

Weet jij het beter..?

Het is niet mogelijk om je eigen vraag te beantwoorden Je mag slechts 1 keer antwoord geven op een vraag Je hebt vandaag al antwoorden gegeven. Morgen mag je opnieuw maximaal antwoorden geven.

0 / 5000
Gekozen afbeelding