Opslaan met de huidige bestandsnaam op een andere locatie via vba

Status
Niet open voor verdere reacties.

snitsel

Gebruiker
Lid geworden
12 feb 2008
Berichten
199
Beste

Telkens als ik bestellingen plaats, sla ik deze op, op de server van de bestellingen onder een bepaalde naam.
Nu wil ik via een korte VBA code dit zelfde bestand opslaan in mijn offerte map met dezelfde bestandsnaam + het dossiernummer.
Deze code wil ik toepassen omdat ik ander veel te veel moet bladeren door mijn servers heen.

Mijn code:

ActiveWorkbook.SaveAs Filename:="G:\Collstrop\Offertes\2008\" & Range("H13").Text & "\" & BESTANDSNAAM & "\" & Range("H13").Text

Met vriendelijke groeten

Steven
 
Code:
ActiveWorkbook.SaveAs "G:\Collstrop\Offertes\2008\" & Range("H13").Text & "\" & [COLOR="SeaGreen"]activeworkbook.name [/COLOR]& "\" & Range("H13").Text
 
Code:
ActiveWorkbook.SaveAs "G:\Collstrop\Offertes\2008\" & Range("H13").Text & "\" & [COLOR="SeaGreen"]activeworkbook.name [/COLOR]& "\" & Range("H13").Text

Wat doe ik fout in mijn vba code? ik krijg de foutmelding:

Fout 1004 tijdens uitvoering:
Methode SaveAs van object_Workbook is mislukt.

mvg
 
had het bestand al een naam (i.e is het al eens opgeslagen) ?
wat staat er in cel H13 ?
 
had het bestand al een naam (i.e is het al eens opgeslagen) ?
wat staat er in cel H13 ?

in cel H13 staat mijn dossiernummer:
de celeigenschap: p080000
in mijn cel staat ingevuld 300
dus staat er in H13 als tekst P080300
De map waar hij het moet opslaan op de server (G:\Collstrop\Offertes\2008\), heb ik al aangemaakt en ik heb het bestand eerst opgeslagen in de map van de bestellingen op een andere server.
 
Laatst bewerkt:
Code:
ActiveWorkbook.SaveAs "G:\Collstrop\Offertes\2008\" & Range("H13").Text & "\" & replace(activeworkbook.name,".xls","") & "\" & Range("H13").Text & ".xls"

Is dit bijv. de bedoeling ?
"G:\Collstrop\Offertes\2008\P080300\testP080300.xls"
 
Code:
ActiveWorkbook.SaveAs "G:\Collstrop\Offertes\2008\" & Range("H13").Text & "\" & replace(activeworkbook.name,".xls","") & "\" & Range("H13").Text & ".xls"

Is dit bijv. de bedoeling ?
"G:\Collstrop\Offertes\2008\P080300\testP080300.xls"

Ja, zo iets... ik leg het nog eens uit
Eerst sla ik mijn bestelling manueel op, (dit omdat ik de bestelling het volgende nummer moet geven), op de server. Dus wordt dit betand dus opgeslaan
bv: Z:\Bestellingen\BE080231.xls

Eens dit opgeslaan op de "bestellingen server" wil ik op de vba knop drukken en moet het volgende gebeuren:

Dit bestand moet nu automatisch opgeslagen worden op en onder deze naam:
G:\Collstrop\Offertes\2008\P080300\BE080231_P080300.xls
en 3 maal afgeprint worden

begrijp je het?
Hopelijk kan je mij verder helpen, alvast bedankt voor uw reacties.

mvg
 
Dan wordt het:

Code:
ActiveWorkbook.SaveAs "G:\Collstrop\Offertes\2008\" & Range("H13").Text & "\" & replace(activeworkbook.name,".xls","_")  & Range("H13").Text & ".xls"

PS. Overigens is het automatisch verhogen van een nummer in VBA ook een fluitje van een cent.
 
Dan wordt het:

Code:
ActiveWorkbook.SaveAs "G:\Collstrop\Offertes\2008\" & Range("H13").Text & "\" & replace(activeworkbook.name,".xls","_")  & Range("H13").Text & ".xls"

PS. Overigens is het automatisch verhogen van een nummer in VBA ook een fluitje van een cent.

Dag snb
Is het mogelijk mij dit ook uit te leggen wat ik moet toevoegen in mijn code, dit zou ook heel handig zijn ,alleen dacht ik dat het te moeilijk ging zijn.

Alvast bedankt voor uw reactie.. ik zal onmiddelijk uw code eens uittesten!!
--> juist de vba code aangepast en het werkt perfect zoals ik het wilde!!! dank u wel SNB..

Hopelijk nu nog het automatisch verhogen...

groetjes
 
Laatst bewerkt:
als je niet van Excel 2007 gebruik maakt:
Code:
With application.filesearch
  .newsearch
  .lookin="Z:\bestellingen
  .filename="BE08*.xls
  x=.execute
End with
in de variabele x staat nu het aantal xls bestanden waarvan de bestandsnaam met BE08 begint.
Stel dat er al 231 staan (de laatste BE080231), dan heet het eerstvolgende bestand "BE08 & format(x+1,"0000") & ".xls"
Geintegreerd:
Code:
With application.filesearch
  .newsearch
  .lookin="Z:\bestellingen
  .filename="BE08*.xls
  Activeworkbook.SaveAs .lookin  & "\BE08 & format(.execute+1,"0000") & ".xls"
End with
 
Laatst bewerkt:
als je niet van Excel 2007 gebruik maakt:
Code:
With application.filesearch
  .newsearch
  .lookin="Z:\bestellingen
  .filename="BE08*.xls
  x=.execute
End with
in de variabele x staat nu het aantal xls bestanden waarvan de bestandsnaam met BE08 begint.
Stel dat er al 231 staan (de laatste BE080231), dan heet het eerstvolgende bestand "BE08 & format(x+1,"0000") & ".xls"
Geintegreerd:
Code:
With application.filesearch
  .newsearch
  .lookin="Z:\bestellingen
  .filename="BE08*.xls
  Activeworkbook.SaveAs .lookin  & "\BE08 & format(.execute+1,"0000") & ".xls"
End with

Beste SNB, dank je wel voor de oplossing, alleen heb ik 1 probleem. Ik maak wel gebruik van Excel 2007 en volgens dat ik er al naar gezocht heb is het dus niet meer via deze weg mogelijk met "application.filesearch". Weet jij een alternatief?
groeten
 
Code:
    For Each fl In CreateObject("scripting.filesystemobject").getfolder("Z:\Bestellingen").Files
        c0 = c0 & "|" & fl.Name
    Next
Activeworkbook.SaveAs "Z:\Bestellingen\BE08" & format(UBound(Filter(Filter(Split(c0, "|"), ".xls"), "BE08"))+1,"0000") & ".xls"
of
Code:
  j = 0
  If Dir("Z:\Bestellingen\BE08*.xls") <> "" Then j = j + 1
  Do Until Dir = ""
    j = j + 1
  Loop
  Activeworkbook.SaveAs "Z:\Bestellingen\BE08" & format(j+1,"0000") & ".xls"
 
Laatst bewerkt:
alleen heb ik 1 probleem. Ik maak wel gebruik van Excel 2007 en volgens dat ik er al naar gezocht heb is het dus niet meer via deze weg mogelijk met "application.filesearch". Weet jij een alternatief?

Of de Dir functie in VBA gebruiken.
 
Waanzinnig gewoon.
Ik heb net een test uitgevoerd en het werkt gewoon.
Kzal dit volgende week even uittesten op de des betreffende bestanden en hopen dat ik daar het zelfde resultaat krijg.

Alleen heb ik bij de tweede code de "+1" moeten veranderen naar "+2" anders krijg ik de melding: dit bestand bestaat al, wilt u het overschrijven.
Activeworkbook.SaveAs "Z:\Bestellingen\BE08" & format(j+1,"0000") & ".xls"

Bij deze reeds bedankt
 
Laatst bewerkt:
Code:
    For Each fl In CreateObject("scripting.filesystemobject").getfolder("Z:\Bestellingen").Files
        c0 = c0 & "|" & fl.Name
    Next
Activeworkbook.SaveAs "Z:\Bestellingen\BE08" & format(UBound(Filter(Filter(Split(c0, "|"), ".xls"), "BE08"))+1,"0000") & ".xls"
of
Code:
  j = 0
  If Dir("Z:\Bestellingen\BE08*.xls") <> "" Then j = j + 1
  Do Until Dir = ""
    j = j + 1
  Loop
  Activeworkbook.SaveAs "Z:\Bestellingen\BE08" & format(j+1,"0000") & ".xls"

Beste SNB

Het lukt me idd wel om het bestand op te slaan in de juiste map met het volgende nummer, maar het probleem is dat hij mijn gehele werkboek opslaat en het mag enkel de geselecteerde sheet zijn.
Bij de bestandsnaam zou ook nog "_Devos" moeten komen op het laatste.
Ik heb de code aangepast, maar het lukt mij niet.
Kan je mij even bijsturen?

Code:
Sub GaNaarUithaallijst()
    
'Opslaan van de bestelling Nestor - Devos - Came
    Sheets("Devos").Select
        For Each fl In CreateObject("scripting.filesystemobject").getfolder("\\Flsrv-01\Bestellingen TD\2008\Collstrop\Bestellingen").Files
            c0 = c0 & "|" & fl.Name
        Next
    Sheet.SaveAs "\\Flsrv-01\Bestellingen TD\2008\Collstrop\Bestellingen\BE08" & Format(UBound(Filter(Filter(Split(c0, "|"), ".xls"), "BE08")) + 1, "0000") & "_Devos" & ".xls"

End Sub
 

Dag Wigi,

Eindje geleden van uw vorige post, maar ik ben pas terug uit verlof.
Ik heb deze code toegepast in mijn bestand mits enige aanpassingen en het opslaan van 1 bestand lukt me wel, alleen heb ik een probleem.
Ik heb 3 verschillende tabbladen die appart moeten opgeslaan worden, dus eigenlijk dacht ik het volgende.
Ik selecteer mijn tabblad (via de vba code) en plak dan de code eronder om het bestand op te slaan, vervolgens terug een ander tabblad selecteren en terug de code en zo nog eens. Maar zo te zien krijg ik een foutmelding omdat ik 3 x dezelfde code gebruik onder elkaar. Nu vroeg ik me af hoe ik deze code moet combineren.

De foutmelding dat ik krijg:

Compileerfout:
Dubbele declaratie in het huidig bereik

mvg
 
Laatst bewerkt:
Iemand een idee hoe ik deze code 3 maal kan toepassen op het zelfde bestand?
Het zal wel nie moeilijk zijn , maar ik vind het niet.

groetjes
 
zet svp. je code hier.
Te oordelen aan de melding heb je meer dan eens dezelfde variabele gedeclareerd.

Code:
Dim c0 as string
--------

Dim c0 as string

-------
Set c0 as Range
etc.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan