Bestand kopieren in map die door excel aangemaakt wordt

Status
Niet open voor verdere reacties.

oansiaux

Gebruiker
Lid geworden
31 mrt 2014
Berichten
14
Beste mensen, ik geraak er niet uit.
Ik heb een excel gemaakt die een folder aanmaakt op de server door een knop.
De naam van deze folder wordt gemaakt aan de hand van een bepaalde cel.
Dus als ik bvb in cel1 de naam samsung typ, zal de folder die aangemaakt wordt door op de knop te duwen ook samsung noemen.

Nu zou ik hierin een bestand willen kopiëren. het is telkens hetzelfde bestand. Deze moet gewoon telkens geplaatst worden in de folder die door bovenstaande knop aangemaakt is geweest.
Hierbij ook de formule die gebruikt wordt om de folder aan te maken:
Private Sub CommandButton1_Click()
Dim strFilename, strDirname, strPathname, strDefpath As String
On Error Resume Next ' If directory exist goto next line
strDirname = Range("C15").Value ' New directory name

strFilename = Range("C15").Value 'New file name
strDefpath = "C:\My Documents\" 'Default path name
If IsEmpty(strDirname) Then Exit Sub
If IsEmpty(strFilename) Then Exit Sub

MkDir strDefpath & strDirname
strPathname = strDefpath & strDirname & "\" & strFilename 'create total string

ActiveWorkbook.SaveAs Filename:=strPathname, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False

End Sub

Kunnen jullie mij hierbij helpen?
Alvast bedankt!
 
Je hebt er al een regel voor:
Code:
    ActiveWorkbook.SaveAs Filename:=strPathname
Wat gaat daar fout mee (anders dan dat je de code niet met de CODE tag opmaakt)?
 
Ik wil nog een ander bestand kopieren die zich op de server bevindt.
Met de code hieronder werkt alles goed MAAR ik wil nog een ander bestand kopieren in dezelfde map met dezelfde naam.
 
Dat kan je met FileCopy doen:
Code:
Sub Copy_One_File()
    FileCopy "C:\Users\Ron\SourceFolder\Test.xls", "C:\Users\Ron\DestFolder\Test.xls"
End Sub
 
Ja dat weet ik maar hij moet het bestand kopiëren naar de map die door bovenstaande code aangemaakt is geweest.
Dus er wordt een bepaalde folder gemaakt door de code met een bepaalde naam.
In die folder moet een bestand gekopieerd worden die zich op de server bevindt.

bv klant1 wordt aangemaakt op de server en daar moet dat bestand gekopieerd worden.
de volgende keer zal de folder misschien klant3 heten. Dus de folder heeft telkens een andere naam.
 
Dan pas je de mapverwijzing aan. Dat is niet zo moeilijk, want die heb je al aan variabelen toegewezen. De bestandsnaam weet je ook tenslotte.
 
Dat is juist wat mij niet lukt, heb je een voorbeeld misschien hoe het wel zou lukken?
 
Je gebruikt de cel C15 voor zowel de foldernaam als voor het bestandsnaam. Dat zal ongetwijfeld niet de bedoeling zijn... Dus óf verwijzen naar een andere cel (bijvoorbeeld D15) óf het bestandsnaam hard opgeven en gelijk houden aan het oorspronkelijke bestand. Dat laatste ziet er dan zo uit:

Code:
FileCopy "C:\Users\Ron\SourceFolder\Test.xls", strDirname & "\Test.xls"
 
Sorry maar het werkt niet...

Als ik op mijn knop duw, wordt er een map aangemaakt met de naam uit cel C15. De hele excel worksheet krijgt dan ook de naam van cel C15 en wordt in die nieuw aangemaakte map geplaatst.
Dus dit werkt allemaal hoe het moet hier en moet niet verandert worden.

ik wil nu gewoon een ander bestand, laat ons zeggen test.xls die op de S:\ drive staat ook kopiëren naar diezelfde map (die werd gemaakt hierboven)

Nu heb ik volgende code maar hij kopieert die ander bestand niet... wat doe ik fout? Het enige dat ik wil is dat hem dat bestandje test ook kopieert naar de server als ik op mijn knop duw...

Code:
Private Sub CommandButton1_Click()
ActiveWorkbook.CheckCompatibility = False
Dim strFilename, strDirname, strPathname, strDefpath As String
On Error Resume Next ' If directory exist goto next line
strDirname = Range("C15").Value ' New directory name

strFilename = Range("C15").Value 'New file name
strDefpath = "S:\Olivier\Offertes\Offertes2016\" 'Default path name
If IsEmpty(strDirname) Then Exit Sub
If IsEmpty(strFilename) Then Exit Sub

MkDir strDefpath & strDirname
strPathname = strDefpath & strDirname & "\" & strFilename 'create total string
FileCopy "S:\Olivier\Voorbeeldoffertes\2016\test.xlsx", strDirname & "test.xlsx"
ActiveWorkbook.SaveAs Filename:=strPathname, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False


End Sub
 
Misschien moet je ook een "\" toevoegen?

Code:
FileCopy "S:\Olivier\Voorbeeldoffertes\2016\test.xlsx", strDirname & "\test.xlsx"
 
Code:
FileCopy "S:\Olivier\Voorbeeldoffertes\2016\test.xlsx", strDefpath & strDirname & "\" & "test.xlsx"
 
Code:
Private Sub CommandButton1_Click()
   if dir(sheets(1).cells(15,3),16)="" then mkdir "S:\Olivier\Offertes\Offertes2016\" & sheets(1).cells(15,3)
   thisworkbook.savecopyas sheets(1).cells(15,3) & "\" & thisworkbook.name
   filecopy "S:\Olivier\Offertes\Offertes2016\test.xlsx",sheets(1).cells(15,3) & "\test.xlsx"
End sub

NB. Als "S:\Olivier\Offertes\Offertes2016\test.xlsx" niet bestaat, wordt ie ook niet gekopieerd.
Als sheets(1).cells(15,3) geen geldige foldernaam bevat loopt de macro ook suboptimaal.
Soms maken overbodige variabelen meer kapot dan je lief is. :(
 
Laatst bewerkt:
@Warme bakkertje

Thanks! dat werkt super goed!! :thumb:

No nog een laatste vraag kan ik in deze code nog een lijn toegoeven dat hem in dezelfde map nog 2 submaps aanmaakt met de naam bv. tekeningen en offerte?
 
Niemand die weet hoe mijn laatste vraag uitgevoerd kan worden in excel vba?

->No nog een laatste vraag kan ik in deze code nog een lijn toegoeven dat hem in dezelfde map nog 2 submaps aanmaakt met de naam bv. tekeningen en offerte?
 
Duik zelf eens een beetje in de code svp.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan