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

Twee mappen aanmaken

Status
Niet open voor verdere reacties.

riw

Gebruiker
Lid geworden
30 jan 2017
Berichten
46
Goedemiddag,

Bijgaand werkblad zou ik, door middel van een druk op de knop, als onderstaand willen opslaan;
bestandslocatie = Y:\test
1e bestandsmap = "Voorbladen 13000 - 13999"
2e bestandsmap = "13067 Rick" (deze map dient in de 1e bestandsmap te komen)
bestandsnaam = "Voorblad 13067"

Het lukt mij maar niet om de 2e bestandsmap aan te maken.

Ik ben benieuwd naar de oplossing.

Groet,
Rick

Bekijk bijlage Voorblad.xlsm
 
Ik begrijp je vraag niet helemaal. Wat is in jouw ogen een bestandsmap? Ik denk een tabblad. Is het de bedoeling een tweede tabblad binnen het bestand te maken?

Dan kan je volstaan met :

Code:
Sheets.Add.Name = Range("B3").Value & " " & Range("B4").Value
 
He hallo,

Met bestandsmap bedoel ik een folder zoals in Windows Verkenner.

Zoiets als onderstaand;
Y:\test\Voorbladen 13000 - 13999\13067 Rick\Voorblad 13067.xlsm

Het lukt me niet om in bovenstaand voorbeeld de map/folder "13067 Rick" aan te maken.

Groet,
Rick
 
Zo wel?

Code:
Sub Knop1_Klikken()
With Sheets("Voorblad")
  c00 = "Y:\test\" & .Range("C2") & (" - ") & .Range("D2") & "\"
  c01 = c00 & .Range("B3") & .Range("B4") & "\"
  With CreateObject("Scripting.FileSystemObject")
    If Not .FolderExists(c00) Then .CreateFolder c00
    If Not .FolderExists(c01) Then .CreateFolder c01
  End With
  ActiveWorkbook.SaveAs c01 & ("Voorblad ") & .Range("B3").Value & ".xlsm" , 52
End With
End Sub
 
Laatst bewerkt:
Deze doet precies wat ik wil. Dankjewel.

Iets te voorbarig geweest. De folder bestond al en zodoende kreeg ik geen foutmelding. Na het verwijderen van de folder kreeg ik weer een foutmelding op het stukje .CreateFolder stPath.

Code:
If Not .FolderExists(stPath) Then .CreateFolder stPath
 
Je laat het belangrijkste weg...
 
Code:
Sub hsv()
With Sheets("voorblad")
 C01 = .Range("C2") & (" - ") & .Range("D2") & "\" & .Range("B3") & .Range("B4")
 CreateObject("shell.application").Namespace("Y:\test").newfolder C01 & "\"
 ThisWorkbook.SaveAs "Y:test\" & C01 & "\" & ("Voorblad ") & .Range("B3").Value & ".xlsm", 52
End With
End Sub
 
Code:
Sub hsv()
With Sheets("voorblad")
 C01 = .Range("C2") & (" - ") & .Range("D2") & "\" & .Range("B3") & .Range("B4")
 CreateObject("shell.application").Namespace("Y:\test").newfolder C01 & "\"
 ThisWorkbook.SaveAs "Y:test\" & C01 & "\" & ("Voorblad ") & .Range("B3").Value & ".xlsm", 52
End With
End Sub
Goedemorgen Harry,

Ik heb je code gebruikt maar krijg de melding;
Fout 91 tijdens uitvoering:
Objectvariabele of blokvariabele With is niet ingesteld


Knipsel.PNG
 
Je laat het belangrijkste weg...

Bedoel je de rest van de code? Bijgaand alsnog. Hij loopt vast op Then .CreateFolder stPath

Code:
Sub Knop4_Klikken()
Dim stPath As String
With Sheets("Voorblad")
    stPath = "Y:\test\"
    stPath = stPath & ("Voorbladen ") & .Range("C2") & (" - ") & .Range("D2") & "\" & .Range("B3") & (" ") & .Range("B4") & "\"
        With CreateObject("Scripting.FileSystemObject")
        If Not .FolderExists(stPath) Then .CreateFolder stPath
    End With
    ActiveWorkbook.SaveAs Filename:=stPath & ("Voorblad ") & .Range("B3").Value & ".xlsm"
    End With
End Sub
 
Nee, ik bedoelde de betreffende foutmelding uiteraard.
 
Precies. Dan is het opgegeven pad dus ongeldig en moet je die nazien.
 
Je zal de mappen afzonderlijk aan moeten maken zie de aanpassingen in #4
 
Precies. Dan is het opgegeven pad dus ongeldig en moet je die nazien.
Mijn kennis rijkt te kort om te zien wat verkeerd is. Het is mij gelukt om één folder in combinatie met de juiste bestandsnaam aan te maken zonder enige foutmelding. Bij het aanmaken van een tweede folder zou ik denken dat de code alleen uitgebreid moet worden met de gegevens voor die tweede folder.

Verder vind ik de melding "Kan het pad niet vinden" onlogisch. Het pad is er namelijk (nog) niet. Deze moet gemaakt worden door de code.
 
De melding is logisch als de map die je probeert aan te maken moet worden gemaakt in een map die niet bestaat.
 
De melding is logisch als de map die je probeert aan te maken moet worden gemaakt in een map die niet bestaat.

Zo had ik er nog niet naar gekeken. Lukt het jou om zowel de eerste als ook de tweede map aan te maken?
 
Loop de code door in Debug Mode (F8) en controleer dan de vertaling van stPath op het moment van .CreateFolder
 
Code:
Sub Knop4_Klikken()
   sn= Sheets("Voorblad").range("B2:D4")
   c00 = "Y:\test\Voorbladen" & sn(1,2) & "_" & sn(1,3) & "\" & sn(2,1) & "_" & sn(3,1)
   if dir(c00,16)="" then CreateObject("shell.application").Namespace(left(c00,2)).NewFolder mid(c00,4)

  ActiveWorkbook.SaveAs c00 & "\Voorblad_" & sn(2,1)& ".xlsm",52
End Sub

NB. Vermijd niet-alphanumerieke tekens ( en spaties) in padnamen/bestandsnamen. Als onvermijdelijk, gebruik dan alleen de underscore: _
 
Laatst bewerkt:
Loop de code door in Debug Mode (F8) en controleer dan de vertaling van stPath op het moment van .CreateFolder

Ik heb de foutopsporing doorlopen. De vertaling die gegeven is lijkt mijns inziens correct.

Knipsel1.PNG
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan