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

save met datum en tijd voor bestandsnaam

Status
Niet open voor verdere reacties.

Senso

Meubilair
Lid geworden
13 jun 2016
Berichten
9.671
Besturingssysteem
W10 Pro en W11 Pro
Office versie
Office 2007 H@S en Office 2021 Prof Plus
Code:
Sub SaveFileUsingUniqueNumber()
Dim Path As String
Dim FileName1 As String

Path = "C:\AddUniqueNumberToFileName\"
FileName1 = Range("A1")

ActiveWorkbook.SaveAs Filename:=Path & FileName1 & Format(Date, "yyyy-mm-dd") & Format(Time, "_hh-mm-ss") & ".xlsm", FileFormat:=xlNormal
End Sub

Bovenstaande doet niet wat ik wil.
Kijk het Excelbestand > test1.???? staat in de map c:\test\etc. = path
Dan wil ik als de macro wordt uitgevoerd het bestand opgeslagen wordt op de dezelfde locatie waar het bestand staat met de toevoeging voor de bestandsnaam
2022-05-24_16-00-01_
De nieuwe naam is dan:
2022-05-24_16-00-01_

Moet in A1 dan de filename staan? of =CEL(bestandsnaam)?
 
Laatst bewerkt:
Maak er eens dit van:
Code:
Sub SaveFileUsingUniqueNumber()
    ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & Format(Date, "yyyy-mm-dd") & Format(Time, "_hh-mm-ss"), 52
End Sub
 
Format(now, "yyyy-mm-dd\_hh-mm-ss") ??
 
Mag uiteraard ook :)
 
@Edmoor
vba volledig?
Waar is dan de bestandsnaam?
 
Je hebt helemaal gelijk.
Dom van mij:
Code:
Sub SaveFileUsingUniqueNumber()
    ActiveWorkbook.SaveAs Replace(ActiveWorkbook.fullName, ".xlsm", "") & Format(Now, "yyyy-mm-dd\_hh-mm-ss"), 52
End Sub
 
Laatst bewerkt:
mogelijk is edmoor op het verkeerde been gezet door jou voorbeeldnamen die hij als de juiste zag.
voeg Range("A1") toe in de coderegel en dan zou het met bestandsnaam zijn.

en zet gewoon een tekst in A1 en niet de de CEL() functie, de functie is niet nodig en geeft waarschijnlijk problemen omdat dan ook het hele pad getoond wordt.

Code:
Sub SaveFileUsingUniqueNumber()
    ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & Range("A1") & Format(Date, "yyyy-mm-dd") & Format(Time, "_hh-mm-ss"), 52
End Sub
 
Die van Edmoor werkt goed, echter de bestandsnaam moet achter de datum en tijd komen te staan.
2022-05-24_12-23-13_test1
2022-05-24_12-23-13_bestandsnaam
Wat ik nu zie is dat bij de laatste van Edmoor ook de oorspronkelijk filename wijzigt en dat is niet de bedoeling.
 
Laatst bewerkt:
Dan kan TS dat omdraaien :)
Ik doe niks met de oorspronkeleijke filename.
 
Laatst bewerkt:
Het kan toch ook ZO?

Code:
Sub SaveFileUsingUniqueNumber()
    ActiveWorkbook.SaveAs ThisWorkbook.Path & "\"(Bestandnaam_)" & Format(Now, "yyyy-mm-dd") & Format(Now, "_hh-mm-ss"), 52
End Sub
 
Duidelijk is dat er niemand is die het test. Want dan zie je dat de gegeven codes niet werken.
 
Code:
Sub SaveFileUsingUniqueNumber()
Dim Path As String
Dim FileName1 As String

Path = "C:\AddUniqueNumberToFileName\"
FileName1 = Range("A1")

ActiveWorkbook.SaveAs Filename:=Path  & Format(Date, "yyyy-mm-dd") & Format(Time, "_hh-mm-ss")[COLOR="#FF0000"]& FileName1 & [/COLOR]".xlsm", FileFormat:=xlNormal
End Sub

Als ik wel goed gelezen heb dan zo.
 
:confused:
Duidelijk is dat er niemand is die het test. Want dan zie je dat de gegeven codes niet werken.
De site is er veel meer om handvaten aan te reiken, dat hoeven zeker geen kant-en-klare oplossingen te zijn.
Eigen creativiteit blijft dus belangrijk om de aangereikte puzzelstukken in elkaar te doen passen.
 
probeer het dan maar eens zo:

Code:
If Range("A1") <> "" Then
    ActiveWorkbook[COLOR="#FF0000"].SaveCopyAs [/COLOR]Filename:=ThisWorkbook.Path & "\" & Format(Now, "yyyy-mm-dd\_hh-mm-ss") & "_" & Range("A1") & ".xlsm"
    
    MsgBox "Bestand is opgeslagen in de map" & vbCrLf & _
            ThisWorkbook.Path & vbCrLf & _
            "met naam:" & vbCrLf & _
            Format(Now, "yyyy-mm-dd\_hh-mm-ss") & "_" & Range("A1") & ".xlsm"
Else
    MsgBox "Er staat niets in cel A1"
End If
 
@cow18
Je moet niets. Ik stel een vraag en de meeste helpers weten nu wel wat mijn "niveau" is. Jij en anderen zijn gezegend en zitten vele malen hoger. Ik kan iets leren en me ergens in verdiepen (op dat moment) echter ik kom niet op boven een bepaald niveau en het probleem is dat ik het morgen dan weer niet weet hoe het in elkaar zit. Ik moet weer herhalen en nog eens herhalen. Mijn hulp op dit forum aan mensen bestaat uit gewoon hard werken en herhalen, herhalen, en nog eens herhalen. Punt.

Ik zal in de uitleg/vraag fouten gemaakt hebben, want Haije begrijpt het niet. Zijn code uitgevoerd en het bestand komt in de nieuwe aangemaakte map zonder de bestandsnaam en de naam van het origineel wijzigt. De latere wens is dat het in de map kom waar het originele bestand staat.

Dus in de map
E:\test\
staat het bestand
test.xlsm
Die open ik en wil daar tussentijds een kopie van maken met het voorvoegsel datum en tijd
dan wordt het bestand opgeslagen in de oorspronkelijke map waar het origineel staat (dus E:\test\)
met de nieuwe naam
2022-05-25_16-45-38_test.xlsm
Let op dat de naam van het originele bestand niet wijzigt! Immers daar blijf je gewoon aan werken.
Hoop dat ik het nu goed heb uitgelegd.

Die van Albert nog niet geprobeerd.

edit:
Doet hetzelfde. Wat ik niet begrijp. Je saved een bestand met de oorspronkelijk naam is goed (test). Save as is een andere naam maar de naam van het origineel wordt ook gewijzigd. Is niet logisch, voor mij dan. In de map blijf bij de menu-uitvoering (lint) het origineel wel in de map staan als ik het goed zie.
Via het lint gaat de procedure wel goed. Kwestie van save test > vervolgens save as voeg datum en tijd toe en sluit test. > Klaar. Dat zal via vba wel te ingewikkeld zijn.

Het is mooi geweest en deze laatste werkwijze is in de praktijk te lastig.
 
Laatst bewerkt:
Wat ik niet begrijp. Je saved een bestand met de oorspronkelijk naam> goed Save as is een andere naam maar de naam van het origineel wordt ook gewijzigd. Is niet logisch, voor mij dan.
Is wél logisch, als je snapt wat er gebeurt. SaveAs is bedoeld om een kopie te maken van een bestaand bestand. Die kopie krijgt dan uiteraard een nieuwe naam. Het oorspronkelijke bestand wordt dan niet meer gebruikt, want je werkt dan verder in het nieuwe bestand. Resultaat: twee bestanden (oude naam, nieuwe naam) en houd dan het oude bestand in de oorspronkelijke fase. Het nieuwe bestand is dan de bijgewerkte versie waarin je verder werkt. Op die manier kun je altijd terugvallen op het origineel. Het heeft (m.i.) geen enkele zin om te werken in een bestand, de veranderingen op te slaan onder een nieuwe naam en dan wederom opnieuw te beginnen in het oude bestand. Tenzij je van dubbel werk houdt natuurlijk.

De optie in bericht #14 is, als je dat tóch wilt, dan ook de enige zinvolle optie. Of je moet het bestand twee keer opslaan. Overigens is de bestandsnaam in een cel zetten niet nodig.

Code:
Sub SaveFileUsingUniqueNumber()
Dim Pad As String, FileName As String
    
    With ActiveWorkbook
        Pad = .Path & Application.PathSeparator
        FileName = Split(.Name, "_")(UBound(Split(.Name, "_")))
        .SaveCopyAs FileName:=Pad & Format(Date, "yyyymmdd_") & Format(Time, "_hhmmss_") & FileName
    End With
 End Sub


Code:
Sub SaveFileUsingUniqueNumber()Dim Pad As String, FileName As String


    With ActiveWorkbook
        Pad = .Path & Application.PathSeparator
        FileName = Split(.Name, "_")(UBound(Split(.Name, "_")))
        .SaveAs FileName:=Pad & Format(Date, "yyyymmdd_") & Format(Time, "_hhmmss_") & FileName, FileFormat:=xlNormal
        .SaveAs FileName:=Pad & FileName, FileFormat:=xlNormal
    End With
 End Sub

Beide varianten slaan het document op onder een nieuwe naam, waarbij de tweede variant dus de kopie nog een keer opslaat onder de oorspronkelijke naam.

Kijk maar wat je handig vindt.
 
Lijkt me toch dat de code in post 14 precies doet wat je vraagt.
Heb je de code wel goed overgenomen?
 
Die als basis gebruikt voor mijn voorbeeld, en inderdaad: no problemo :).
 
Code:
sub zoveel()
 with thisworkbook
   .savecopyas .path & "\" & format(now, "yyyy-mm-dd_hh-mm-ss_") & .name
 end with
end sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan