Avatar billede sleort Nybegynder
09. december 2011 - 12:39 Der er 6 kommentarer og
1 løsning

Hvis fil er gemt før så Save ellers SaveAs

Formål:
At diktere det forslået navn på filen når den skal gemmes første gang.

Problem:
Uanset om jeg trykker Ctrl+s eller lign. så fanger min kode eventen og laver det til en SaveAs hvor man bliver spurgt om filnavnet.

Ønske:
Når filen er blevet gemt første gang, så skal skriptet kun lave en Save til den fil, og ikke lave en SaveAs.


Min kode fra ThisWorkBook  Office 2010



'This dictates the suggested filename when user makes a save

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

'GoTo MyDebugEnd  'Enable this line to disable the script.

Dim user, DocType, ProjectName, Dept, SaveAsFile, NameFile, SendPath

user = Environ("USERNAME")

SendPath = "C:\Users\" & user & "\Desktop\"

DocType = "VOC"

Application.Goto Reference:="Title"
ProjectName = ActiveCell.Value


On Error Resume Next
Application.Goto Reference:="Task"
On Error Resume Next
Application.Goto Reference:="NumberLast"

Dept = "Tooling"

Application.Dialogs(xlDialogSaveAs).Show Format(DocType & " - " & ProjectName & " - " & Dept)

MyDebugEnd:

End Sub
Avatar billede supertekst Ekspert
09. december 2011 - 13:34 #1
Er filen baseret på en skabelon?
Avatar billede claes57 Ekspert
09. december 2011 - 14:24 #2
i min gamle word (2000) kunne man i makro få fat på aktuelt filnavn - og hvis det findes, så brug save - ellers saveas
Så der skal placeres en if/else/end if omkring - noget i stil med (dette er ikke kode - men ret selv til til valide kald)

if Application.filname <> "" then
  Application.Save
else
  Dim user, DocType, ProjectName, Dept, SaveAsFile, NameFile, SendPath
  user = Environ("USERNAME")
  SendPath = "C:\Users\" & user & "\Desktop\"
  DocType = "VOC"
  Application.Goto Reference:="Title"
  ProjectName = ActiveCell.Value
  On Error Resume Next
  Application.Goto Reference:="Task"
  On Error Resume Next
  Application.Goto Reference:="NumberLast"
  Dept = "Tooling"
  Application.Dialogs(xlDialogSaveAs).Show Format(DocType & " - " & ProjectName & " - " & Dept)
end if
Avatar billede sleort Nybegynder
12. december 2011 - 06:59 #3
Filen jeg laver er en alm excel fil som andre kommer til at bruge, og den er baseret på templaten "normal" fra officepakken.
Claes57, jeg vil forsøge at teste med dit script.
Avatar billede sleort Nybegynder
12. december 2011 - 08:07 #4
Jeg har forsøgt at omskrive din kode til dette, me nu sker der bare slet ingenting:
Nogle bud?


'This dictates the suggested filename when user makes a save as

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

'GoTo MyDebugEnd  'Enable this line to disable the script.


  Dim user, DocType, ProjectName, Dept, SaveAsFile, NameFile, SendPath
  user = Environ("USERNAME")
  SendPath = "C:\Users\" & user & "\Desktop\"
  DocType = "VOC"
  Application.Goto Reference:="Title"
  ProjectName = ActiveCell.Value
  On Error Resume Next
  Application.Goto Reference:="Task"
  On Error Resume Next
  Application.Goto Reference:="NumberLast"
  Dept = "Tooling"


If Application.Filename <> DocType & " - " & ProjectName & " - " & Dept Then
  ExcelSheet.ActiveWorkbook.Save
Else

  Application.Dialogs(xlDialogSaveAs).Show Format(DocType & " - " & ProjectName & " - " & Dept)
End If

MyDebugEnd:

End Sub
Avatar billede claes57 Ekspert
12. december 2011 - 10:01 #5
prøv lige at få en msgbox med Application.Filename frem - bare for at se, om det er det rigtige du tester på - måske skal der en .xls på
Avatar billede sleort Nybegynder
14. december 2011 - 08:31 #6
Jeg endte med at finde løsningen selv. Det krævede noget omskrivning, men virker til gengæld efter hensigten.

Tak for jeres indput.
Avatar billede sleort Nybegynder
14. december 2011 - 10:39 #7
Claes57, kan du ikke smide et svar - det var alt andet lige dit input som ansporede min løsning.
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
Kurser inden for grundlæggende programmering

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