• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Bestandsnaam naar Excel kopieren.

Status
Niet open voor verdere reacties.

Schelledraad

Gebruiker
Lid geworden
11 feb 2014
Berichten
107
Ik wil alle bestandsnamen uit mijn documenten kopieren naar een Excel sheet. Ik kan ze in de Verkenner wel selecteren en kopieren, maar plakken in excel lukt niet.
 
Echt alle bestanden of alleen Excel bestanden?
 
Open een command prompt (Windowstoets + CMD)
Ga naar Documents: CD documents
Type DIR /S /B > dirlist.csv
Open de verkenner
Ga naar Documenten
Dubbelklik op dirlist.csv
 
Of zoiets:
Code:
Option Base 1

Sub GetFilenames()
    Files = Split(CreateObject("WScript.Shell").Exec("cmd /c dir /b C:\Users\Schelledraaad\Documents\*.xls*").StdOut.ReadAll, vbCr)
    For i = 1 To UBound(Files)
        Cells(i, 1) = Files(i)
    Next i
    Range("A1:A" & i).WrapText = False
    Columns.AutoFit
End Sub
 
@AHulpje:
Een eenvoudige manier om in de juiste map te komen.
Ga in de verkenner naar de gewenste map, tik de letters CMD in de adresbalk in en druk op de Enter toets.
 
Eentje voor alle bestanden, inclusief bestanden in subfolders

Code:
Dim ar() As Variant, x As Long

Public Sub file_search()
 On Error Resume Next
 getFile "C:\Users\Schelledraaad\Documents\"
 Cells(1, 1).Resize(x) = Application.Transpose(ar)
 End
End Sub

Public Sub getFile(objFolderPath As String)
 Dim sFold, it, sf
 With CreateObject("scripting.filesystemobject")
    Set sFold = .GetFolder(objFolderPath)
    For Each it In sFold.Files
       If .GetExtensionName(it) Like "xls*" Then
          ReDim Preserve ar(x)
          ar(x) = it.Path
          x = x + 1
       End If
    Next
    For Each sf In sFold.SubFolders
       getFile sf.Path
    Next
 End With
End Sub
 
Om ook de bestanden in de subfolders mee te nemen hoef je in mijn voorbeeld alleen maar /s achter de /b te zetten.
 
Nooit problemen mee gehad, maar dat wil niet zeggen dat je ongelijk hebt :)
 
Het kan ook zonder de loop :)
Code:
Sub GetFilenames()
    Files = Split(CreateObject("WScript.Shell").Exec("cmd /c dir /b C:\Users\Schelledraad\Documents\*.xls*").StdOut.ReadAll, vbCr)
    With Range("A1:A" & UBound(Files))
        .Value = Application.Transpose(Files)
        .WrapText = False
    End With
    Columns.AutoFit
End Sub
 
Laatst bewerkt:
Hoi Edmoor,

Code werkt prima. In dit geval gaat het om JPG bestanden. Het vreemde is dat je de resultaten wel ziet, maar als je in de formulebalk en de cellen zelf kijkt staat er niets ?!?!?! (zie bijlage)
 

Bijlagen

  • Map1.xlsx
    10,7 KB · Weergaven: 10
Het is ook geen formule.
Het is een stukje VBA code.
Je hebt nu een .xlsx document geplaatst en die bevat per definitie geen VBA code.
Als je die code in je document hebt geplaatst moet je dat document opslaan als .xlsm (Document met macro's).
 
Klopt, maar het bestand waar de code in staat is als xlsb opgeslagen en dan gebeurd het zelfde. Het vreemde is dat als ik B2 = A2 doe dan is het zichtbaar in de formule balk als formule maar als ik vervolgens B2 kopieer en plat sla met waarden plakken, dan is het visueel in B2 wel zichtbaar, maar in de formule balk staat niets ?! Met zoeken naar .JPG vervangen door niets, verdwijnt ook alles
 
Dat komt omdat er in de cellen vanaf rij 2 een LineFeed (Teken(10)) voor de bestandsnaam staat.
Geen idee hoe die er in komt.
 
En het wordt nog veel spannender, want als ik in c2 bv de formule =Links(A2;13) schrijf krijg ik maar 12 tekens retour ?!?!
 
Zo:
Code:
Cells.Replace What:=vbLf, Replacement:="", LookAt:=xlPart
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan