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

Bestand automatisch opslaan als, met datum

Status
Niet open voor verdere reacties.

jolly01

Gebruiker
Lid geworden
12 apr 2009
Berichten
486
Oeldere gaf mij hiervoor onderstaande code:

Code:
'With Sheets("formulier")
ActiveWorkbook.SaveAs FileName:= _
"voorraadlijst" & " "& Format(.[a1], "yyyy-mm-dd")& ".xls"
'End With

Hoe activeer ik de macro?
Hoe ziet de code eruit als het bestand moet worden opgeslagen in: D:\accounts\test ?
 
Laatst bewerkt:
Hoe je de macro activeert, kan je helemaal zelf bepalen.
Het hangt er maar vanaf hoe en wanneer je zelf wilt dat de macro wordt gestart.

Code:
ActiveWorkbook.SaveAs FileName:= "D:\accounts\test\voorraadlijst" & " "& Format(.[a1], "yyyy-mm-dd")& ".xls"

Met vriendelijke groet,


Roncancio
 
Wat ik ook probeer, ik krijg hem niet geactiveerd.

Mijn kennis van VBA er er kennelijk nog niet goed genoeg voor. Begrijp nog niet goed hoe een macro te activeren.

Heb een werkmap toegevoegd en in werkblad "voorraadlijst" een knop aangemaakt.

Zou je de macro erin kunnen zetten zodat ik hem kan activeren met de knop?
 

Bijlagen

Heb de bijlage opgeslagen als "voorraadlijst.xls"en in A1 de formule =VANDAAG() gezet.
Als ik op de knop klik dan krijg ik de melding:

Compileerfout:
Ongeldige of niet-gekwalificeerde verwijzing

Waarbij A1 in de formule is geselecteerd en "Private Sub CommandButton1_Click()"
geel is aangemerkt.
Wat doe ik fout?
 

Bijlagen

Haal de punt voor A1 weg
Code:
Format(.[a1], "yyyy-mm-dd")
Format([a1], "yyyy-mm-dd")
 
Ah ja nu kan ik hem activeren :)

Nou wil ik dat van de actieve werkmap voorraadlijst.xls een kopie wordt gemaakt in D:\accounts\test\ onder dezelfde naamsvoorwaarden en daarvan de bladen "jk" en "ss" worden verwijderd en vervolgens dit bestand wordt afgesloten. Na de activatie wil ik in de oorspronkelijke werkmap voorraadlijst.xls verder kunnen werken.

Hoe ziet de code er dan uit?

Heb inmiddels ander bestand bijgevoegd.
 

Bijlagen

Laatst bewerkt:
Zijn er meer sheets dan jk en ss die verwijderd moeten worden?

Met vriendelijke groet,


Roncancio
 
In dit voorbeeld wil ik alleen de sheet voorraadlijst in de kopie, dus alleen jk en SS verwijderen.
De originele sheet bevat ongeveer 10 sheets waarvan ik er 7 wil verwijderen.
 
Laatst bewerkt:
Roncancio,

Zie je kans om nog even naar bovenstaand probleem te kijken?

Heb je misschien meer info van me nodig?
 
Code:
Sub Verwijderen()
Dim WS As Worksheet
    MyArr = Array("jk", "ss")
    For Each WS In Worksheets
        If InStr(1, " " & Join(MyArr, " ") & " ", " " & WS.Name & " ", 1) > 0 Then
            Application.DisplayAlerts = False
            WS.Delete
            Application.DisplayAlerts = True
        End If
    Next
    ActiveWorkbook.SaveAs Filename:="D:\ACCOUNTS\test\voorraadlijst KOPIE" & " " & Format([a1], "yyyy-mm-dd") & ".xls"
End Sub

Bovenstaande code verwijderd de werkbladen jk een ss en slaat het bestand op met de toevoeging KOPIE.
Je kunt in MyArr de namen van de overige werkbladen plaatsen die verwijderd moeten worden.
Wat wellicht handiger kan zijn om de 3 werkbladen te benoemen die behouden moeten blijven en/of uitgaan van de index-waardes van de werkbladen.
Dus bijvoorbeeld de eerste 7 werkbladen, de laatste 7 werkbladen of werkbladen 1, 3, 4, etc.

Met vriendelijke groet,


Roncancio
End Sub
 
Laatst bewerkt:
Bedankt voor je input Roncancio !

Ik zie dat uit de opgeslagen kopie de betreffende bladen zijn verwijderd.

Wat ik graag zou willen is dat het kopiebestand na opslaan wordt afgesloten en het oorspronkelijke bestand voorraadlijst.xls open blijft, zodat ik dáárin verder kan werken.

Hoe ziet de code er dan uit?
 
Nou, zo:


Code:
Sub Verwijderen()
Dim WS As Worksheet
Dim sPath As String
Dim sFile As String

    MyArr = Array("jk", "ss")
    sPath = "D:\ACCOUNTS\test\"
    sFile = "voorraadlijst"
    For Each WS In Worksheets
        If InStr(1, " " & Join(MyArr, " ") & " ", " " & WS.Name & " ", 1) > 0 Then
            Application.DisplayAlerts = False
            WS.Delete
            Application.DisplayAlerts = True
        End If
    Next
    With ActiveWorkbook
        .SaveAs Filename:=sPath & sFile & " KOPIE" & " " & Format([a1], "yyyy-mm-dd") & ".xls"
        .Close SaveChanges:=True
    End With
    Workbooks.Open sPath & sFile & ".xls"
End Sub

Met vriendelijke groet,


Roncancio
 
Als ik jouw macro activeer wordt er een kopie bestand aangemaakt, opgemaakt en afgesloten het oorspronkelijkbestand wordt afgesloten zonder te bewaren.
 
Hm, als ik de macro test dan wordt het kopiebestand opgemaakt en afgesloten en wordt het oorspronkelijke bestand geopend.
Het oorspronkelijke bestand wordt dus niet afgesloten en zeker niet zonder op te slaan.

Met vriendelijke groet,


Roncancio
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan