opslaan als tweede versie als er al 1 versie bestaat...

Status
Niet open voor verdere reacties.

blueberry013

Gebruiker
Lid geworden
23 mei 2011
Berichten
111
Hallo!

Een vraagje...
Voor het opslaan met een macro heb ik volgende code... probleem is dat als ik dit een tweede maal moet doen, excel vraagt om de vorige versie te overschrijven. Dit zou dus niet mogen...
Wat zou het moeten worden....
F:\Planning\Planning 2011\Week" & naam3 +1& ""

als het opgeslagen wordt nu, slaagt hij op als vb. Week21
Indien er een tweede versie komt dient dit Week21v1 te wordenof v2, v3,...

Kan iemand mij hiermee helpen?

Alvast bedankt!!!


Code:
Sub AddNew()

On Error Resume Next

naam = "2011-w"
Worksheets(naam).Activate
activerow = ActiveCell.Row

naam3 = Worksheets(naam).Cells(activerow, 2).Value

Set Newbook = Workbooks.Add
With Newbook
.Title = "Planning"
.Subject = "Planning"
.SaveAs Filename:="F:\Planning\Planning 2011\Week" & naam3 & ""

Sheets.Add.Name = "Manuele"
Sheets.Add.Name = "Multipond"
Sheets.Add.Name = "Ishida"

Application.DisplayAlerts = False
Worksheets("Blad1").Delete
Worksheets("Blad2").Delete
Worksheets("Blad3").Delete
Application.DisplayAlerts = True

End With
End Sub
 
Laatst bewerkt door een moderator:
Verplaatst naar VBA
 
Hoi Blueberry 013

Ik heb even naar je code gekeken en kwam met het onderstaande.
Ik heb voor het gemak even een functie gemaakt om de nieuwste versie te bepalen. je hebt ze beide nodig.

Code:
Option Explicit
Sub AddNew()

Dim strNaam3 As String
[B][COLOR="red"]Dim lngActiveRow as Long[/COLOR][/B]

    With Worksheets("2011-w")
        
        .Activate
        lngActiveRow = ActiveCell.Row
        strNaam3 = .Cells(lngActiveRow, 2).Value

    End With


    With Workbooks.Add

        .Title = "Planning"
        .Subject = "Planning"
        
        .SaveAs Filename:=NewFileName(BaseName:=strNaam3)
         
        .Worksheets(1).Name = "Manuele"
        .Worksheets(2).Name = "Multipond"
        .Worksheets(3).Name = "Ishida"
    
    End With

End Sub

doorzoek de map voor een vrij versienummer
Code:
Function NewFileName(ByVal BaseName As String) As String
'nieuw versienummer genereren tot maximaal 9999 versies
Const MAX_VERSION As Long = 9999

Dim strPath As String
Dim strFile As String
Dim lngNext As Long

    strPath = "F:\Planning\Planning 2011\Week"
    strFile = CStr([B][COLOR="red"]BaseName[/COLOR][/B])
    
    Do While Dir(strPath & strFile) <> "" _
        And lngNext < MAX_VERSION
        
        'volgende versie nummer
        lngNext = lngNext + 1
        strFile = BaseName & "v" & CStr(lngNext)
    
    Loop
    
    NewFileName = strPath & strFile

End Function

Hopelijk heb je er wat aan.
Succes.
 
Laatst bewerkt:
Wellicht een domme vraag... maar waar zet ik die Function?? hoe wordt die geactiveerd
 
dan geeft ie een foutmelding...

als ik option explicit weglaat vindt hij zijn weeknummer niet...
als ik het wel zet, geeft hij als melding

activerow

compileerfout : een variabele is niet gedefinieerd...

definieer ik deze geeft hij NewFileName is niet gedefinieerd
definieer ik die komt er : verwacht een matrix...
 
geen idee hoe dat komt. je macro's staan toch in een module?

probeer eens deze regels aan te passen:
activerow = ActiveCell.Row
strNaam3 = .Cells(activerow, 2).Value
in
strNaam3 = .Cells(ActiveCell.Row, 2).Value
 
Hoi Blueberry.

Ik was vergeten een variabele te declareren voor rownummer, en er stond iets fout in de filename functie. sorry!

Als je een variabele niet declareert krijg je inderdaad een foutmelding met Option Explicit

Ik zou Option Explicit sowieso gebruiken, zodat je zeker weet dat je geen spelfouten maakt in namen van variabelen, en dus geen onverwachte foute resultaten krijgt. En declareren van variabelen is natuurlijk hartstikke handig voor excel objecten zodat intellisense het coderen gemakkelijker voor je maakt.

Ik heb de procedure nu ook getest, en bij mij werkt het zoals verwacht,
maar hopelijk geldt dat nu ook voor jou, want daar zijn we voor bezig ;)

Groeten,
Mark.

ps. ik heb de code in mijn vorige post aangepast, kopieer deze opnieuw (intussen wachten we gespannen op het resultaat)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan