Avatar billede benthe-b Juniormester
04. maj 2020 - 06:58 Der er 9 kommentarer

vba kode, gemmer på dato, men overskriver ved datoskift

Jeg har denne kode til at gemme et dokument, men jeg vil gerne have den overskriver sig selv, når man når til midnat laver den en ny adresse, det vil jeg gerne undgå, så den gemmer ovenpå sig selv hver gang, er der nogen som kan hjælpe

Private Sub CommandButton1_Click()
Dim Path As String
Dim strDate As String
Dim FileName2 As String
Dim FileName3 As String
Dim FileName4 As String

strDate = Format(Date, "YYYY-") & Format(Date, "MM-") & Format(Date, "DD") & " "
Path = "C:\dokument\" & strDate

FileName2 = Range("M2")
FileName3 = Range("N2")
FileName4 = Range("P2")
ActiveWorkbook.SaveAs Filename:=Path & FileName2 & "-" & FileName3 & "-" & FileName4 & "-" & ".xlsm", FileFormat:=52

End Sub
Avatar billede kim1a Ekspert
04. maj 2020 - 08:26 #1
Så du vil reelt set have den til at slette forrige dags dokument?
Avatar billede benthe-b Juniormester
04. maj 2020 - 12:10 #2
Jeg vil have den til at gemme oven på den første,
med den dato jeg startede med,
Eks gemt som 2020-05-03  Pia  Jensen

Dagen efter gemmer den som 2020-05-04 Pia Jensen
Og det skal den ikke, da det er den samme ordre
Så den skal blive ved med at gemme som

2020-05-03 Pia Jensen
Avatar billede Juul Forsker
04. maj 2020 - 15:42 #3
Du kan ikke overskrive med et andet navn - den vil gemme som et nyt dokument. Vejen frem er nok at ændre navn > gem, eller gem som > slet tidligere fil
Avatar billede kim1a Ekspert
04. maj 2020 - 15:48 #4
Hvor befinder dokumentet sig inden det gemmes? Altså inden det bliver navngivet "2020-05-03 Pia Jensen" første gang?
Et check kunne måske være at hvis filen allerede ligger i et arkiv længere inde end blot "C:\dokument\" så skal den blot gemme og ikke gemme-som.
Avatar billede benthe-b Juniormester
05. maj 2020 - 07:17 #5
Der ligger en gennemvej på desktoppen, der er gemt som skabelon,
Med aktive macro, dette for ikke at overskrive originalen,
Når der skal gemmes, så skal den gemme på et deledrev, så
Som flere brugere har adgang til
Det er ikke drev c, som jeg fik skrevet, det er drev
Q:
Hvis man selv skal gå ind og gemme,
vil der over tid blive lavet mange fejl, da alle brugere
Ikke er lige fortrolige med computere, derfor skal
Der laves en knap (macro) til at gemme på
Avatar billede benthe-b Juniormester
05. maj 2020 - 08:21 #6
Private Sub CommandButton1_Click()
Dim Path As String
Dim FileName1 As String
Dim FileName2 As String
Dim FileName3 As String
Path = "Q:\dokument\"
FileName1 = Range("P2")
FileName2 = Range("N2")
FileName3 = Range("M2")
ActiveWorkbook.SaveAs Filename:=Path & FileName1 & "-" & FileName2 & "-" & FileName3 & "-" & ".xlsm", FileFormat:=52

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect Password:="123"
On Error GoTo Handler
If Target.Address = "$N$2" And Target.Value <> "" Then
Application.EnableEvents = False
Target.Offset(0, 5) = Format(Now(), "yyyy-mm-dd kl.hh")
Application.EnableEvents = True
End If
Handler:
ActiveSheet.Protect Password:="123"
End Sub
Avatar billede kim1a Ekspert
05. maj 2020 - 09:07 #7
Du har lige vist to forskellige makro, hvori den ene gemte dokumentet i en mappe med dato, og den anden ikke gør. Så nu er jeg lidt forvirret.

Min tanke var at kontrollere om filen er åbnet fra skabelon eller fra eksisterende ny version (gemt med makro) af filen.
Den nemme måde var at se om stien er der hvor den ville gemme sig hvis man vælger saveas. Så erstat din save as med denne if sætning (der både kan gemme eller gemme som:

If Application.ActiveWorkbook.Path = Path Then
    ActiveWorkbook.Save
    Else
    ActiveWorkbook.SaveAs Filename:=Path & FileName1 & "-" & FileName2 & "-" & FileName3 & "-" & ".xlsm", FileFormat:=52
End If
Avatar billede benthe-b Juniormester
07. maj 2020 - 08:03 #8
Så den kommer til at se sådan ud

Private Sub CommandButton1_Click()
Dim Path As String
Dim FileName1 As String
Dim FileName2 As String
Dim FileName3 As String
Path = "Q:\dokument\"
FileName1 = Range("P2")
FileName2 = Range("N2")
FileName3 = Range("M2")
ActiveWorkbook.SaveAs Filename:=Path & FileName1 & "-" & FileName2 & "-" & FileName3 & "-" & ".xlsm", FileFormat:=52

If Application.ActiveWorkbook.Path = Path Then
    ActiveWorkbook.Save
    Else
    ActiveWorkbook.SaveAs Filename:=Path & FileName1 & "-" & FileName2 & "-" & FileName3 & "-" & ".xlsm", FileFormat:=52
End If

End Sub
Avatar billede benthe-b Juniormester
07. maj 2020 - 08:17 #9
hov den skal jo kun gemme 1 gang ;-)

Private Sub CommandButton1_Click()
Dim Path As String
Dim FileName1 As String
Dim FileName2 As String
Dim FileName3 As String
Path = "Q:\dokument\"
FileName1 = Range("P2")
FileName2 = Range("N2")
FileName3 = Range("M2")

If Application.ActiveWorkbook.Path = Path Then
    ActiveWorkbook.Save
    Else
    ActiveWorkbook.SaveAs Filename:=Path & FileName1 & "-" & FileName2 & "-" & FileName3 & "-" & ".xlsm", FileFormat:=52
End If

End Sub
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester