Avatar billede michaelmce Nybegynder
29. august 2006 - 23:15 Der er 12 kommentarer og
1 løsning

Application.Quit ikke det samme som at lukke Excel?

Er det mig der har misforstået noget eller er Application.Quit kommandoen ikke det samme som at trykke på krydset i højre hjørne af Excel programmet?

Grunden til at jeg spørger, er at jeg har en stump kode i mit Workbook_BeforeClose der tjekker om projektet er gemt og hvis ikke gemmer den i en bestemt placering som blandt andet indeholder thisworkbook.path som sti. Når jeg trykker på "krydset i Excel", virker det fint og filen gemmes i den rigtige mappe. Men når jeg gør det ved hjælp af en knap knyttet til en makro med koden Application.Quit, gemmer den filen i roden af det drev som projektet ligger på (det er som om den misser thisworkbook.path).


Er der nogen der har oplevet lignende. Skal jeg evt. bruge en anden kode?
Avatar billede kabbak Professor
29. august 2006 - 23:19 #1
må vi se koden
Avatar billede kabbak Professor
29. august 2006 - 23:25 #2
ActiveWorkbook.RunAutoMacros Which:=xlAutoClose
Avatar billede michaelmce Nybegynder
29. august 2006 - 23:31 #3
Private Sub Workbook_BeforeClose(Cancel As Boolean)
 
   
   
    If ThisWorkbook.Saved = True Then
    Cancel = False
   
   
    Else
   
    Svar = MsgBox("Du skal gemme projektet med 'GEM PROJEKT' knappen!!" & vbCrLf & vbCrLf & _
    "Vil du gemme nu?" & vbCrLf & vbCrLf & _
    "Ja = Gemmer projektet og lukker" & vbCrLf & _
    "Nej = Fortsæt med at arbejde på projektet" & vbCrLf & _
    "Annuller = LUKKER PROJEKTET, UDEN AT GEMME!!!!", vbYesNoCancel)
   
    If Svar = vbCancel Then GoTo Afbryd
   
    If Svar = vbYes Then
       
        Call GemSom5
       
   
    Else
   
        Cancel = True
        End If
    End If
   
   

 
Afbryd:
    Application.ScreenUpdating = True
    ThisWorkbook.Saved = True
    Application.Quit
   


End Sub


Og her er koden for afslut knappen:

Public Sub Afslut()

Application.Quit

End Sub


Og her koden for makroen GemSom5:

Public Sub GemSom5()

Filename = ThisWorkbook.path & "\Projekt" & "_" & Date & "_" & Format(Time, "HH-MM-SS") & ".xls"
fileTosave = Filename

    If fileTosave <> False Then
   
    ActiveWorkbook.SaveAs Filename
    MsgBox " Du har nu gemt det aktuelle projekt" & " med filnavn " & Filename
End If

Application.Quit


End Sub
Avatar billede kabbak Professor
29. august 2006 - 23:43 #4
er det denne der går galt

Public Sub Afslut()

Application.Quit

End Sub

prøv at rette til dette

Public Sub Afslut()

ThisWorkbook.Save
Application.Quit


End Sub
Avatar billede michaelmce Nybegynder
29. august 2006 - 23:57 #5
Nej det duer ikke.

Så gemmer den bare projektet med sit oprindelige navn.

Og jeg kan heller ikke få RunAutoMacros til at gøre det. Den hopper uden om gem funktionen.
Avatar billede kabbak Professor
30. august 2006 - 00:06 #6
Public Sub Afslut()
ThisWorkbook.Close
End Sub
Avatar billede michaelmce Nybegynder
30. august 2006 - 00:11 #7
Har jeg også prøvet, det virker heller ikke. Den springer uden om min gem funktion. Den kommer godt nok med min msgBox og fortæller at jeg har gemt filen, men den er ikke gemt.
Er det fordi jeg har lavet rod i if funktionerne i workbook_BeforeClose?
Avatar billede kabbak Professor
30. august 2006 - 08:48 #8
prøv denne


Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If ThisWorkbook.Saved = False Then
        Svar = MsgBox("Du skal gemme projektet med 'GEM PROJEKT' knappen!!" & vbCrLf & vbCrLf & _
                      "Vil du gemme nu?" & vbCrLf & vbCrLf & _
                      "Ja = Gemmer projektet og lukker" & vbCrLf & _
                      "Nej = Fortsæt med at arbejde på projektet" & vbCrLf & _
                      "Annuller = LUKKER PROJEKTET, UDEN AT GEMME!!!!", vbYesNoCancel)
        If Svar = vbCancel Then GoTo Afbryd
        If Svar = vbYes Then
                    fileTosave = ThisWorkbook.Path & "\Projekt" & "_" & Date & "_" & Format(Time, "HH-MM-SS") & ".xls"
            ActiveWorkbook.SaveAs fileTosave
            MsgBox " Du har nu gemt det aktuelle projekt" & " med filnavn " & fileTosave
        Else
            Cancel = True
        End If
    End If

Afbryd:
    ThisWorkbook.Saved = True
Application.Quit
End Sub


'Og her er koden for afslut knappen:

Public Sub Afslut()
ActiveWorkbook.Close
End Sub
Avatar billede michaelmce Nybegynder
30. august 2006 - 10:14 #9
Det virker heller ikke...

Når jeg klikker på Excels egen "close knap"(krydset), kører det fint, og filen gemmes som den skal.
Men når jeg bruger min egen "Afslut knap", kommer den frem med min msgBox og spørger om jeg vil gemme og jeg svarer ja. Herefter kommer msgBox frem og fortæller at filen er gemt, men der er ikke gemt nogen fil (progressbaren forneden kører heller ikke!)

Det er som om at ActiveWorkbook.Close og Application.Quit, virker anderledes når de køres fra en makro, end når man bruger Excels egne "knapper/menuer"???)
Avatar billede michaelmce Nybegynder
30. august 2006 - 10:45 #10
Det er som om at linien "fileTosave" ikke bliver eksekveret, men alligevel har den det rigtige filnavn i msgBox(men filen er ikke gemt), så et eller andet sted må den jo have kigget i linien??
Avatar billede kabbak Professor
30. august 2006 - 11:51 #11
Har du kikket på Roden af dit drev, hvis den ikke fanger ThisWorkbook.path, så gemmer den på roden af C drevet, hvis det er C du er på.
Avatar billede michaelmce Nybegynder
30. august 2006 - 16:40 #12
Ja det var det den startede med. Men efter jeg har lavet de ændringer du har foreslået, gemmer den slet ikke mere(kun en msgBox om at den har gemt filen). Det der undrer mig er at  det virker fint hvis man lukker Excel på normalvis, men ikke via en "knap"???
Avatar billede michaelmce Nybegynder
29. oktober 2007 - 20:20 #13
Svarer selv!
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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