Office: Excel schließen

Helfe beim Thema Excel schließen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo ihr alle, ihr habt mir bereits in einem anerden Problem super geholfen, nun stehe ich vor einem weiteren :) Ist aber bestimmt nicht so... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von toshi_ba, 21. August 2008.

  1. toshi_ba Erfahrener User

    Excel schließen


    Hallo ihr alle,

    ihr habt mir bereits in einem anerden Problem super geholfen, nun stehe ich vor einem weiteren :) Ist aber bestimmt nicht so schwierig für euch :lol:

    Ich habe eine Arbeitsmappe, die nur über einen CommandButton geschlossen werden kann (das Kreuz wurde deaktiviert). In dieser Arbeitsmappe läuft ein Zeitmakro, das die aktuelle Zeit anzeigt. Nun möchte ich, dass sich bei Klick auf den Button nicht nur die Mappe sondern das komplette Excel schließt.
    Habe es bereits mit
    Code:
    application.quit
    und
    Code:
    With Application
    .DisplayAlerts = False
    .Quit
    End With
    versucht, leider ohne Erfolg. Ich denke, dass dies am Zeitmakro liegt, das irgendwo im Hintergrund weiterläuft und somit Excel nicht beendet werden kann. (In anderen Mappen ohne Zeitmakro funktionieren beide Codes)
    Nun habe ich mir überlegt, dass ich das Zeitmakro einfach beim Schließen deaktiviere, kenne aber leider den Code dafür nicht. Kann mir vll jemand weiterhelfen?

    Vielen Dank schonmal,

    Babsi
     
    toshi_ba, 21. August 2008
    #1
  2. schatzi Super-Moderator
    Hallo!

    Ich hab' zwar nix zum Testen da, aber ich versuch's mal trotzdem:
    In deinem Zeitmakro steht bestimmt irgendwo "DoEvents", damit du während der Laufzeit auch weiterarbeiten kannst.
    Wenn du nun eine globale Boolean-Variable deklarierst, die du beim Quit-Makro auf True setzt (vorher auf False), dann kannst du (hoffentlich) dein Zeitmakro damit abbrechen:
    If Abbruch = True Then Exit Sub
     
    schatzi, 21. August 2008
    #2
  3. miriki Erfahrener User
    Ohne zu wissen, was das "Zeitmakro" genau macht, wird's schwierig. Aber erster Schuß ins Blaue: Findest Du in Deinem Code etwas ähnliches wie das hier?
    Code:
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        Cancel = True
    End Sub
    Das "true" kann auch eine Variable sein, die an ganz anderer Stelle gesetzt wird. Ich benutze z.B. gerne etwas in der Art von
    Code:
    'Modul1
    Option Explicit
    Global ProgrammLaeuft As Boolean
    Code:
    'DieseArbeitsmappe
    Option Explicit
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        Cancel = ProgrammLaeuft
    End Sub
    Private Sub Workbook_Open()
        ProgrammLaeuft = True
    End Sub
    Code:
    'Tabelle1
    Option Explicit
    Private Sub btn_Quit_Click()
        ProgrammLaeuft = False
        Application.DisplayAlerts = False
        Application.Quit
    End Sub
    So kriegt man einen definierten Ausstieg aus dem Programm und wird nicht durch bösartiges [X]-Klicken aus dem Konzept gebracht. ;-)

    Gruß, Michael
     
  4. toshi_ba Erfahrener User

    Excel schließen

    Hi schatzi,

    deine Antwort hört sich sehr kompetent, für mich leider zu kompetent an :-D

    Mein Zeitmakro sieht wie folgt aus:

    Code:
    Option Explicit
    Public DaEt As Date
    
    Sub Zeitmakro()
    ThisWorkbook.Worksheets("Tabelle1").Range("J2") = Format(Time, "hh:mm")
    DaEt = Now + TimeValue("00:01:00")
    Application.OnTime DaEt, "Zeitmakro"
    End Sub
    
    Leider versteh ich nicht wirklich, was du mit deinem zweiten Absatz gemeint hast :-| Wenns zu kompliziert ist, das einem Anfänger wie mir zu erklären, kann ich das Zeitmakro auch rausnehmen, ist eher spielerei als unbedingt notwendig :mrgreen: ...aber wär schon cool wenns mit funktioniert :-D

    Babsi
     
    toshi_ba, 21. August 2008
    #4
  5. miriki Erfahrener User
    Das Zeitmakro dürfte, gerade weil es mit .OnTime arbeitet, nicht der Grund sein. Aber Dein Satz
    Code:
    das Kreuz wurde deaktiviert
    läßt eigentlich darauf schließen, daß im "BeforeClose"-Event das Schließen des Blatts, sozusagen "in letzter Sekunde", unterbunden wird. Deswegen gucke bitte in "DieseArbeitsmappe", ob Du dort etwas in der Art findest. Wenn ja, bitte posten.

    Wenn ich Dich richtig verstehe, gibt es ja bereits einen Button, der die Mappe schließt. Den willst Du nur so ändern, daß Excel kpl. geschlossen wird, oder? Kannst Du denn mal den Code posten, der hinter dem Button steckt?

    Gruß, Michael
     
  6. miriki Erfahrener User
    Übrigens, da Dein Zeitmakro im schlimmsten Fall immer 59 Sekunden hinterherhinkt, hier mal eine gepimpte Version:
    Code:
    Sub Zeitmakro()
    
        Dim DaEt As Date 'oder muß die wirklich "public" sein?
        Dim SecondsLeft As Long
    
        ThisWorkbook.Worksheets("Tabelle1").Range("J2") = Format(Time, "hh:mm")
    
        'DaEt = Now + TimeValue("00:01:00")
    
        DaEt = Now()
        SecondsLeft = 60 - Second(DaEt)
        DaEt = DaEt + TimeSerial(0, 0, SecondsLeft)
    
        Application.OnTime DaEt, "Zeitmakro"
    
    End Sub
     
  7. toshi_ba Erfahrener User
    Hallo Michael,

    danke für den pimp :-D Das mit der Minute hinterherhinken war mir auch aufgefallen, aber ich konnte es mir nicht erklären. Jetzt bin ich schlauer. Das funkt.

    mein BeforeClose sieht so aus:
    Code:
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    
       Cancel = Not SchliessenErlaubt
      
    End Sub
    Daran kann es aber kaum liegen, da das Problem mit Excel schließen schon vorlag, bevor ich überhaupt das schließen über "x" verhindert habe.

    Du hast richtig angenommen, dass es einen Button zum schließen gibt. Der Code dahinter lautet:
    Code:
    Private Sub CommandButton1_Click()
    
    Application.ScreenUpdating = False
    
    ThisWorkbook.Worksheets("s1").Unprotect
    ThisWorkbook.Worksheets("s2").Unprotect
    ThisWorkbook.Worksheets("s3").Unprotect
    ...
     
     
      If CLng(ThisWorkbook.Worksheets("Verzeichnis").Cells(1, 1).Value) < 1 Then
     
    
       MsgBox "Sie müssen noch speichern! Klicken Sie auf den Button neben mir um zu speichern :-) "
                                                                                           
      Else
     
     
     Worksheets("s1").Range("A20:A30").ClearContents
     Worksheets("s1").Range("H9:I23").ClearContents
     Worksheets("s2").Range("A20:A30").ClearContents
     Worksheets("s2").Range("H9:I23").ClearContents
     ...
    
    ThisWorkbook.Worksheets("s1").Protect
    ThisWorkbook.Worksheets("s2").Protect
    ThisWorkbook.Worksheets("s3").Protect
    ...
    
    Mappe_Schliessen
    
    Workbooks("dateiname").Close savechanges:=True
    
    Application.Quit
    
    End If
    
    
    End Sub
    ...wobei aber eben "application.quit" nicht ausgeführt wird, sondern nur workbooks.close!

    Gruß
    Babsi
     
    toshi_ba, 21. August 2008
    #7
  8. miriki Erfahrener User

    Excel schließen

    LOL... :-)

    Sorry, war nicht böse gemeint, aber Du bist genau auf das hereingefallen, was mir auch schon, und mehr als einmal, passiert ist!

    Und dabei sagt man sich im Nachhinein: "*patsch* natürlich, wie auch?"

    Und jetzt geh mal in Gedanken ganz langsam bis zur ".close" Zeile, verharre dort einen Augenblick und beobachte, wie sich das Workbook schließt, nicht nur das Blatt mit den linierten Zellen, sondern auch der VBA-Code dahinter.

    Und jetzt gehe langsam weiter zur nächsten Zeile, die da... ähm... welche Zeile? Ähm... Das Workbook ist doch geschlossen, zu und wech! Da ist auch kein Code mehr, der ausgeführt werden kann! Das Ding kann kein Quit mehr machen, weil das Close da bereits vorher abgewürgt hat.

    Du mußt also application.quit ausführen, ohne vorher ein workbooks.close gemacht zu haben. Das bedingt aber auch, daß ein workbooks.save notwendig wird, weil das savechanges:=true ja nicht mehr existiert dann.

    Das mit dem save... Scheint mir (interpretiert) aber eh etwas doppelt gemoppelt zu sein. Der Buttonklick überprüft ja schon, ob noch gespeichert werden muß. Und bei dem Button "neben mir" wird wahrscheinlich auch die Variable "SchliessenErlaubt" auf "true" gesetzt.

    Im "BeforeClose" wird das ja auch, genau wie ich es mir dachte, ausgewertet und verhindert ggf. das Schließen des Workbooks und damit auch das Beenden von Excel.

    Gruß, Michael
     
  9. toshi_ba Erfahrener User
    juhuu...ich habs :) danke, klingt natürlich alles plausibel was du geschrieben hast. Aber wenn dir das auch schon passiert ist, bin ich ja in guter Gesellschaft Excel schließen :cool:

    Außerdem war allerdings noch ein dicker Klops versteckt :-) Den verrat ich aber nicht, das wäre zu peinlich :mrgreen: Allerdings hast du mich genau auf den richtigen Weg gebracht! Danke

    Gruß
    Babsi
     
    toshi_ba, 21. August 2008
    #9
Thema:

Excel schließen

Die Seite wird geladen...
  1. Excel schließen - Similar Threads - Excel schließen

  2. Excel per Button Speichern und Schliessen und "X - Button" deaktivieren

    in Microsoft Excel Hilfe
    Excel per Button Speichern und Schliessen und "X - Button" deaktivieren: Guten Morgen zusammen, ich suche nach einem VBA-Code (unter Office 365), um das Schließen einer Excel-Datei über das "Rote X" oben rechts zum Einen zu verhindern und statt dessen zum Anderen den...
  3. Excel Powerquery: Nach Schließen & Laden Fehlermeldung [DataFormat.Error]

    in Microsoft Excel Hilfe
    Excel Powerquery: Nach Schließen & Laden Fehlermeldung [DataFormat.Error]: Hallo zusammen! Ich bin gerade dabei von einem Teams-Sharepoint-Ordner Daten mit Power-Query abzurufen. Ich lade die Daten über "Daten Abrufen -> Datei -> Sharepoint-Ordner" und gebe dann den...
  4. EXCEL Datei schließen

    in Microsoft Excel Hilfe
    EXCEL Datei schließen: Hallo zusammen. Wenn ich mit einem VBA Code: Private Sub CommandButton1_Click() Dim WSh As Worksheet Dim sMailtext As String Dim sBer As String Set WSh = ThisWorkbook.Sheets("Info")...
  5. Excel automatisch per VBA schliessen ?

    in Microsoft Access Hilfe
    Excel automatisch per VBA schliessen ?: Hallo liebes Team, ich habe folgende Code geschrieben, wo ich auf Knopfdruck eine Excel Auswertung machen kann. Private Sub Befehl114_Click() On Error GoTo Err_Meldung Dim DocName As String...
  6. Schließen von mehreren Datein

    in Microsoft Excel Hilfe
    Schließen von mehreren Datein: Hallo Zusammen! Ich bin gerade dabei via VBA einen Code zu erstellen um beim öffnen eines Excel (MainDatei) immer ein weiteres (zweite Datei) zu öffnen. Sowie beim schließen der "MainDatei" ein...
  7. Excel VBA zwischen geöffneten Dateien wechseln und schließen.

    in Microsoft Excel Hilfe
    Excel VBA zwischen geöffneten Dateien wechseln und schließen.: Hi zusammen, Meine Arbeitsmappe öffnet via VBA die neueste Datei(auch eine Arbeitsmappe) in einem bestimmten Pfad und öffnet diese. Danach werden Daten hieraus kopiert und in die ursprüngliche...
  8. Excel schließen nach Inaktivität

    in Microsoft Excel Hilfe
    Excel schließen nach Inaktivität: Hallo Zusammen, in der Datei im Anhang,befindet sich Code der nach 1 Minute Inaktivität die Datei schließt. Dies funktioniert auch. Es wäre aber besser wenn sich Excel komplett beendet. So bleibt...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden