• 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.

Excelinhoud gebruiken voor het aanmaken van mappen

Status
Niet open voor verdere reacties.

Brancoli

Gebruiker
Lid geworden
27 nov 2012
Berichten
67
Ik heb een misschien beetje vreemde vraag. Is het mogelijk om met behulp van een commando of wat dan ook, mappen aan te maken in Mijn Documenten die de namen dragen van de inhoud van bijvoorbeeld de cellen A1:A50.
Dus - anders en praktisch gezegd - in de cellen A1:A50 staan de namen van de leerlingen uit klas 1a. Ik wil in een submap onder Mijn Documenten een map aanmaken met de naam: klas 1a en daaronder moeten vijftig submapjes komen met de namen van de leerlingen.
Is dat te doen?
 
Ja dat kan.
Cel A1 wordt Hoofdmap
Cel A2 tot laatst gevulde cel in kolom A worden submappen
Code:
Sub Spaarie()
    With Sheets("Blad1")
    locatie = "C:\Documents and Settings\Username\Mijn documenten\" & .Cells(1) & "\"
        If Dir(locatie, vbDirectory) = "" Then
            If MsgBox("Map bestaat niet, wilt u deze aanmaken?", vbYesNo + vbInformation, "Niet gevonden") = vbYes Then MkDir locatie
        End If
    
        For Each v In .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row)
            If v <> "" Then MkDir locatie & "\" & v
        Next
    End With
End Sub
 

Bijlagen

Laatst bewerkt:
Geweldig! Bedankt Spaarie. Het kan dus wel.
Het enige is dat ik een foutmelding krijg:
ScreenHunter_33 Jun. 27 17.19.jpg
Ik heb daarna iets aangepast aangezien ik op de D schijf Mijn Documenten heb staan en het daar terecht moet komen. Maar daarbij kreeg ik dezelfde melding.
 
Code:
Sub M_snb()
  sn = Blad1.Columns(1).SpecialCells(2)

  For j = 1 To UBound(sn)
    If j = 1 Then
        MkDir "D:\" & sn(j, 1)
    Else
        MkDir "D:\" & sn(1, 1) & "\" & sn(j, 1)
    End If
  Next
End Sub
of
Code:
Sub M_snb()
  sn = Blad1.Columns(1).SpecialCells(2)
  c00 = Replace(Application.DefaultFilePath & "\", "\\", "\")
  
  For j = 1 To UBound(sn)
    If j = 1 Then
        MkDir c00 & sn(j, 1)
    Else
        MkDir c00 & sn(1, 1) & "\" & sn(j, 1)
    End If
  Next
End Sub
 
Laatst bewerkt:
Ik denk dat je toch 'locatie' moet aanpassen naar de juiste locatie.
In jouw geval moet je C:\ > D:\ aanpassen, maar 'Username' moet je ook aanpassen, naar je gebruikersnaam.
En mocht je Engelse versie hebben is het niet Mijn documenten, maar My documents.

Maar snb heeft ook me ogen geopend, want inderdaad is Mijn documenten de DefaultFilePath. Ik zou die codes ook testen.
 
Sorry voor de late reactie maar ik kon niet eerder reageren. Bij de oplossing van snb krijg ik fout 75 (toegangsfout bij pad of bestand) en bij de oplossing van spaarie fout 76. Hoe moet ik nu verder?
 
Tja, als de folder al bestaat .....
Kijk ook eens in je VBA Handboek.
Fouten oplossen doe je in de VBEditor met F8 : stap voor stap de macro uitvoeren.
En je eigen bestand plaatsen maakt het helpers een stuk eenvoudiger.

Code:
Sub M_snb()
  on error resume next
  sn = Blad1.Columns(1).SpecialCells(2)
  c00 = Replace(Application.DefaultFilePath & "\", "\\", "\")
  
  For j = 1 To UBound(sn)
    If j = 1 Then
        MkDir c00 & sn(j, 1)
    Else
        MkDir c00 & sn(1, 1) & "\" & sn(j, 1)
    End If
  Next
End Sub
 
Laatst bewerkt:
beste snb,

Ik heb nog een vervolgvraagje (en ik zal er een voorbeeldbestand van bijdoen). Je makro werkt prima. Onder het submapje met de inhoud van cel A1 worden submapjes aangemaakt met de inhoud van de cellen A2:An.
In kolom A staan de leerlingennummer. Het zou nog prettiger en leesbaarder zijn als de naam van de submapjes naast het leerlingennummer ook hun naam staat. De voornamen staan in kolom B, tussenvoegsels in kolom C en de achternaam in kolom D.
Ik dacht aan =TEKST.SAMENVOEGEN maar ik weet niet hoe ik dat in de subroutine kan onderbrengen. Maar misschien kan het ook anders?
Bekijk bijlage Namenlijst.xls
 
Code:
Sub M_snb()
    On Error Resume Next
    sn = Blad1.Columns(1).SpecialCells(2).Resize(, 4)
    c00 = Replace(Application.DefaultFilePath & "\", "\\", "\")

    For j = 1 To UBound(sn)
        If j = 1 Then
            MkDir c00 & sn(j, 1)
        Else
            MkDir c00 & sn(1, 1) & "\" & Join(Application.Index(sn, j, 0), "_")
        End If
    Next
End Sub
 
Laatst bewerkt:
Dankjewel voor je snelle reactie. Alleen heb ik de namen nog niet te pakken.
.Resize(, 4) is toegevoegd...?
 
Geweldig zeg. Dat is een prachtige bron van informatie. Maar bied je ook de mogelijkheid van een cursusaanbod?
 
Mail me even via de kontaktknop op de webpagina.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan