Avatar billede rene_andersen Nybegynder
15. juni 2009 - 11:01 Der er 6 kommentarer og
1 løsning

Gemme fil som "dags dato_version2"

Hej

Jeg ønsker at lave en VBA-kode der gemmer en fil med angivelse af dags dato og "version2" hvis filen allerede eksisterer.. Jeg kan fint få den til gemme filen med angivelse af dags dato, men jeg kan ikke helt gennemskue hvordan jeg tilføjer en kontrol af om filen findes og dernæst får den til at tilføje version2 til filnavnet hvis denne eksisterer (samt en version3 hvis version2 også findes osv). (Jeg foretrækker en løsning med angivelse af versioner i stedet for at Now() medtager klokkeslettet).

Jeg har lavet følgende:
Dim Dato As Date
Dim DatoNavn, StiNavn, Filnavn As String

Dato = Now()
DatoNavn = Left(Dato, 10)
StiNavn = "C:\Temp\"
Filnavn = "Balanceopgørelse pr. " & DatoNavn & ".xlsx"
ActiveWorkbook.SaveAs Filename:=StiNavn & Filnavn
15. juni 2009 - 11:19 #1
Prøv med

Dato = Now()
DatoNavn = Left(Dato, 10)
StiNavn = "C:\Temp\"
Filnavn = "Balanceopgørelse pr. " & DatoNavn &
if Dir(filnavn) <> "" Then
  Filnavn = Filnavn & " version 2"
end if
filnavn = filnavn & ".xlsx"
Avatar billede rene_andersen Nybegynder
15. juni 2009 - 14:41 #2
Ja det er noget af det rigtige, nu tjekker den i hvert fald om filen allerede er oprettet..

Der er dog 2 problemer:
For det første driller angivelsen af filtypen: Jeg kan ikke udelade ".xlsx" første gang jeg opretter filen og derfor hedder version 2: "Balanceopgørelse pr. 2009-06-15.xlsx version 2.xlsx"

Derudover vil jeg gerne have en "tæller" der kan lave en "version 3" hvis version 2 findes i forvejen og "version 4" hvis der er lavet en version 3 osv.
15. juni 2009 - 15:58 #3
Bruger du min kode? Den sætter filtype på både 1. og anden gang.
15. juni 2009 - 15:59 #4
Nu ser jeg det - der skal naturligvis stå

if Dir(filnavn & ".xlsx") <> "" Then
  Filnavn = Filnavn & " version 2"
end if
15. juni 2009 - 16:10 #5
Versions nummer må kunne klares med noget i retning af

Dim versionsnr as integer
Dim versionsstr as string
versionsnr = 0
versionsstr = ""
While Dir(filnavn & versionsstr ".xlsx") <> ""
  versionsnr = versionsnr + 1
  versionsstr = "Version " & versionsnr
Loop
Avatar billede rene_andersen Nybegynder
16. juni 2009 - 13:29 #6
Sådan! Det virker - eller du fik mig i hvert fald så tæt på målet at jeg selv kunne kravle resten af vejen ;0)


Min færdige kode er:

Dim Dato As Date
Dim DatoNavn, StiNavn, FilNavn, VersionTekst As String
Dim VersionNr As Integer

VersionNr = 1 '(Så det først bliver nr. 2 der får "version" i navnet)

Dato = Now()
DatoNavn = Left(Dato, 10)
StiNavn = "C:\Temp\"
Filnavn = "Balanceopgørelse pr. " & DatoNavn
  Do While Dir(StiNavn & FilNavn & ".xlsx") <> ""
    VersionNr = VersionNr + 1
    VersionTekst = "_ver" & VersionNr
    FilNavn = "Balanceopgørelse pr. " & DatoNavn & VersionTekst
  Loop
    ActiveWorkbook.SaveAs Filename:=StiNavn & FilNavn & ".xlsx"

Men mange tak for hjælpen!
Smid et svar, så skal du få de points du fortjener..
16. juni 2009 - 13:56 #7
Takker
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