Nieuwe map aanmaken

DirkJansen

Gebruiker
Lid geworden
7 jan 2017
Berichten
14
Ik heb de onderstaande code om klantdossiermappen aan te maken in mijn klantenbestand. Graag zou ik bij het aanmaken van een nieuwe machine kaart voor klant in zijn dossiermap een machine aan te maken [MachineId]+[Merk]+[Type}. Nu krijg ik hiervoor de code niet goed. Kan iemand mij helpen met code hiervoor?
Alvast bedankt.

Private Sub KlantMap_Click()
Dim fs As Object

Dim strNewFolder As String

Set fs = CreateObject("Scripting.FileSystemObject")

strNewFolder = "C:\Users\User\Documents\D-base\Bedrijfx\KlantenDossier\" & Me.[NaamBedrijf] & "_" & Me.[Plaats] & "_" & Me.[Klantnummer]


If Not fs.FolderExists(strNewFolder) Then

MkDir strNewFolder
MkDir strNewFolder & "\Machines"
MkDir strNewFolder & "\PDF_bestanden"

Set fs = CreateObject("Scripting.FileSystemObject")

MsgBox "Dossiermap(" & strNewFolder & ") aangemaakt"

Else
MsgBox "Dossiermap bestaat al"

End If

End Sub
 
Dat lijkt me op de veldnamen na identiek aan wat hier staat (ik ga er vanuit dat die code werkt).
Wat heb je al geprobeerd?
Wat gaat er fout (foutmelding?)?
 
Bestaat deze map:
Code:
C:\Users\User\Documents\D-base\Bedrijfx\KlantenDossier\
anders gaat het fout.
Overigens is de tweede CreateObject overbodig.
Bericht automatisch samengevoegd:

En zo gaat het aanmaken van een dieper liggende map een stuk makkelijker:
Code:
Sub CreateDir(strPath As String)
    Dim elm As Variant
    Dim strCheckPath As String

    strCheckPath = ""
    For Each elm In Split(strPath, "\")
        strCheckPath = strCheckPath & elm & "\"
        If Len(Dir(strCheckPath, vbDirectory)) = 0 Then MkDir strCheckPath
    Next
End Sub
 
Laatst bewerkt:
Dat lijkt me op de veldnamen na identiek aan wat hier staat (ik ga er vanuit dat die code werkt).
Wat heb je al geprobeerd?
Wat gaat er fout (foutmelding?)?
Deze werkt, alleen wil ik nu een map aanmaken in de aangemaakte directorie

C:\Users\User\Documents\D-base\Bedrijfx\KlantenDossier\" & Me.[NaamBedrijf] & "_" & Me.[Plaats] & "_" & Me.[Klantnummer]\Machines\New_Folder

Gaat volgens mij mis in " & Me.[NaamBedrijf] & "_" & Me.[Plaats] & "_" & Me.[Klantnummer]
 
Bedoel je zoiets?
Code:
Dim fs As Object
Dim strNewFolder As String

Set fs = CreateObject("Scripting.FileSystemObject")

strNewFolder = "D:\" & Me.[NaamBedrijf] & "_" & Me.[Plaats] & "_" & Me.[Klantnummer]

If Not fs.FolderExists(strNewFolder) Then
    MkDir strNewFolder
    MkDir strNewFolder & "\Machines"
    MkDir strNewFolder & "\PDF_bestanden"
    MkDir strNewFolder & "\Machines\" & Me.MachineId & "_" & Me.Merk & "_" & Me.Type
   
    MsgBox "Dossiermap (" & strNewFolder & ") aangemaakt"
Else
    MsgBox "Dossiermap bestaat al"
End If

Misschien moet je het aanmaken van de bedrijfsmap en de machinemap(pen) wel uit elkaar trekken. Ik neem aan dat een bedrijf meerdere machines kan hebben. Bovendien vraag ik me af hoe het zit met de achterliggende database. Je stelt je vraag in het Access forum, dus ik neem aan dat er ook een database is en dat die synchroon moet lopen met de mappenstructuur.
 
Bedoel je zoiets?
Code:
Dim fs As Object
Dim strNewFolder As String

Set fs = CreateObject("Scripting.FileSystemObject")

strNewFolder = "D:\" & Me.[NaamBedrijf] & "_" & Me.[Plaats] & "_" & Me.[Klantnummer]

If Not fs.FolderExists(strNewFolder) Then
    MkDir strNewFolder
    MkDir strNewFolder & "\Machines"
    MkDir strNewFolder & "\PDF_bestanden"
    MkDir strNewFolder & "\Machines\" & Me.MachineId & "_" & Me.Merk & "_" & Me.Type
 
    MsgBox "Dossiermap (" & strNewFolder & ") aangemaakt"
Else
    MsgBox "Dossiermap bestaat al"
End If

Misschien moet je het aanmaken van de bedrijfsmap en de machinemap(pen) wel uit elkaar trekken. Ik neem aan dat een bedrijf meerdere machines kan hebben. Bovendien vraag ik me af hoe het zit met de achterliggende database. Je stelt je vraag in het Access forum, dus ik neem aan dat er ook een database is en dat die synchroon moet lopen met de mappenstructuur.
Hoi Peter,
Ik wil idd de aan te maken machines los maken van de dossiermap, via de machinekaart bij aanmaak nieuwe machine. De mappen Machines en PDF zijn als aangemaakt bij aanmaak nieuwe klant. Maar daar loop ik vast. Deze mappen worden alleen gebruikt voor exports en informatie.
 
Laatst bewerkt:
Geef dan even aan wat verwacht. Ik ben even de draad kwijt.
 
Het laatste stukje van je mapnaam gaat fout
Code:
Me.[Klantnummer]\Machines\New_Folder
moet worden
Code:
Me.[Klantnummer] & "\Machines\New_Folder"
Met de Sub CreateDir uit #3 kun je in één keer een hele gelaagde directory aanmaken, dus
Code:
CreateDir "C:\Users\User\Documents\D-base\Bedrijfx\KlantenDossier\" & Me.[NaamBedrijf] & "_" & Me.[Plaats] & "_" & Me.[Klantnummer] & "\Machines\New_Folder"
 
Geef dan even aan wat verwacht. Ik ben even de draad kwijt.
Excuus.
Via de klantkaart worden bij aanmaak klant de dossiermappen Machines en PDF voor de klant aangemaakt.
Als er bij deze klant een machine wordt aangemaakt wil ik een machine map aanmaken in de map machines ([MachineID]_[Merk]_[Type]).
 
Dus:
Code:
CreateDir "C:\Users\User\Documents\D-base\Bedrijfx\KlantenDossier\" & Me.[NaamBedrijf] & "_" & Me.[Plaats] & "_" & Me.[Klantnummer] & "\Machines\" & Me.[MachineID] & "_" & Me.[Merk] & "_" & Me.[Type]
 
Ik krijg deze fout bij aanroepen
 

Bijlagen

  • Schermafbeelding 2025-11-06 203818.jpg
    Schermafbeelding 2025-11-06 203818.jpg
    12,8 KB · Weergaven: 2
Ik heb het nu aangepast in;

Private Sub MachineMap_Click()
Dim fs As Object
Dim strNewFolder As String

Set fs = CreateObject("Scripting.FileSystemObject")

strNewFolder = "C:\Users\User\Documents\D-base\Bedrijf_x\KlantenDossier\" & Me.[NaamBedrijf] & "_" & Me.[Plaats] & "_" & Me.[Klantnummer]\Machines\" & Me.MachineId & "_" & Me.Merk & "_" & Me.Type

If Not fs.FolderExists(strNewFolder) Then
MkDir strNewFolder
MkDir strNewFolder & " & Me.MachineId & "_" & Me.Merk & "_" & Me.Type

MsgBox "Machinemap (" & strNewFolder & ") aangemaakt"
Else
MsgBox "Machinemap bestaat al"
End If

End Sub

Maar krijg Compileerfout Syntaxisfout

Ik kom er niet uit
 

Bijlagen

  • Schermafbeelding 2025-11-06 205940.jpg
    Schermafbeelding 2025-11-06 205940.jpg
    8,7 KB · Weergaven: 1
Laatst bewerkt:
En nog steeds is fout (zie ook #8):
Code:
Me.[Klantnummer]\Machines\
dat moet zijn
Code:
Me.[Klantnummer] & "\Machines\"
En maak het jezelf makkelijk door de Sub CreateDir uit #3 te gebruiken.
 
Dit:
Code:
Me.[Klantnummer]\Machines\"

Moet zijn:
Code:
Me.[Klantnummer] & "\Machines\"

Edit:
AHulpje was me voor.
 
Sorry, ik loop compleet vast.

Kunt u complete code aangeven, ik ben nu volgens mij alles door elkaar aan het halen.
Ik heb een chronische en complexe multisysteemziekte. Ik weet wat ik maken wil, maar in m'n hooft gaat nu alles door elkaar en krijg de code niet goed. Excuses voor de vele vragen.
 
Vervang je huidige Sub MachineMap_Click() door
Code:
Private Sub MachineMap_Click()
    Dim strNewFolder As String
   
    strNewFolder = "C:\Users\User\Documents\D-base\Bedrijf_x\KlantenDossier\" & Me.[NaamBedrijf] & "_" & Me.[Plaats] & "_" & Me.[Klantnummer] & "\Machines\" & Me.MachineId & "_" & Me.Merk & "_" & Me.Type
    CreateDir strNewFolder
    MsgBox "Map aangemaakt: " & strNewFolder
End Sub

Sub CreateDir(strPath As String)
    Dim elm As Variant
    Dim strCheckPath As String

    strCheckPath = ""
    For Each elm In Split(strPath, "\")
        strCheckPath = strCheckPath & elm & "\"
        If Len(Dir(strCheckPath, vbDirectory)) = 0 Then MkDir strCheckPath
    Next
End Sub

En anders morgen met een fris hoofd weer verder.😴
 
Vervang je huidige Sub MachineMap_Click() door
Code:
Private Sub MachineMap_Click()
    Dim strNewFolder As String
  
    strNewFolder = "C:\Users\User\Documents\D-base\Bedrijf_x\KlantenDossier\" & Me.[NaamBedrijf] & "_" & Me.[Plaats] & "_" & Me.[Klantnummer] & "\Machines\" & Me.MachineId & "_" & Me.Merk & "_" & Me.Type
    CreateDir strNewFolder
    MsgBox "Map aangemaakt: " & strNewFolder
End Sub

Sub CreateDir(strPath As String)
    Dim elm As Variant
    Dim strCheckPath As String

    strCheckPath = ""
    For Each elm In Split(strPath, "\")
        strCheckPath = strCheckPath & elm & "\"
        If Len(Dir(strCheckPath, vbDirectory)) = 0 Then MkDir strCheckPath
    Next
End Sub

En anders morgen met een fris hoofd weer verder.😴
Bedankt voor je moeite, krijg nu volgende melding
 

Bijlagen

  • Schermafbeelding 2025-11-06 215115.jpg
    Schermafbeelding 2025-11-06 215115.jpg
    75,8 KB · Weergaven: 5
  • Schermafbeelding 2025-11-06 215218.jpg
    Schermafbeelding 2025-11-06 215218.jpg
    13 KB · Weergaven: 5
Sorry, had ik niet gezien. Plaats eens vierkante haken om de laatste drie velden.
Dus
Code:
Me.[MachineId] & "_" & Me.[Merk] & "_" & Me.[Type]
 
Terug
Bovenaan Onderaan