Office: (Office 2019) EXCEL Datei schließen

Helfe beim Thema EXCEL Datei schließen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen. Wenn ich mit einem VBA Code: Private Sub CommandButton1_Click() Dim WSh As Worksheet Dim sMailtext As String Dim sBer As String... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Motor-Bastler, 31. März 2023.

  1. EXCEL Datei schließen


    Hallo zusammen. Wenn ich mit einem VBA Code:
    PHP:
    Private Sub CommandButton1_Click()

      
    Dim WSh As Worksheet
      Dim sMailtext 
    As String
      Dim sBer 
    As String

      Set WSh 
    ThisWorkbook.Sheets("Info")                ' Blatt mit Maildaten
      sBer = "A1:G90"  '  
    WSh.Cells(Rows.Count"B").End(xlUp).Row  ' Kopierbereich

      WSh.Range(sBer).Copy                                      ' 
    Bereich kopieren

      With CreateObject
    ("Outlook.Application").CreateItem(0)
          .
    BodyFormat 2                                       ' 2=HTML-Format, 3=Richtext
          .Subject = "Änderungen" '  
    WSh.Range("G7")            ' Betreff
          .To = "XXXXXXXXX@t-online.de"                         ' 
    Empfänger
          
    '  .CC = "YYYYYYYYY@t-online.de"                      ' InfoEmpfänger
          sMailtext 
    "Aktueller Änderungsumfang"       ' Mailbodytext
         '  
    sMailtext Replace(sMailtext"¶"vbLf)             ' Umbrüche einfügen
          .GetInspector                                         ' 
    Signatur holen
          
    .htmlbody Replace(sMailtextvbLf"<br>") & .htmlbody

            
    .Display  ' Auf dem Display anzeigen

          With .GetInspector.WordEditor.Application.Selection
              .Start = Len(sMailtext):   .Paste                 ' 
    Grafik in Mail einfügen
          End With
          
    .send
      End With
     
                Worksheets
    ("ArbTab").Visible True
                 Worksheets
    ("PLZ").Visible True
                
                
        
    For Each WSh In Application.Workbooks
        Next


    ' Ab hier "Die Datei wird automatisch beendet

    Application.DisplayAlerts = False  ' 
    Alle Meldungen ausschalten
    Workbooks
    ("2_Quartal_2023.xlsm").Close SaveChanges:=True
    Application
    .DisplayAlerts True  ' Nach dem Speichern alle Meldungen wieder einschalten

    Application.Quit


    End Sub
    das Beenden eine Datei auslöse funktioniert das korrekt.

    Wenn ich dan noch den Code:
    Code:
      Option Explicit
    
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    
    MsgBox "Kann nur über Arbeit beenden geschlossen werden"
    
    Cancel = True
    End Sub
    
    in diese Arbeitsmappe einfüge damit nicht mit "X" die datei geschlossen werden kann wird mit dem CommandButton 1 die Datei nicht mehr geschlossen.
    Aber wenn ich das laufen lasse "Private Sub CommandButton1_Click()" kommt Laufzeitfehler 13 (Typenunverträglichkeit als Fehlermeldung) von Zeile 40 bzw. 41 aus Code #1

    Die Datei wird damit nicht mehr geschlossen.
    Weis hierfür jemand einen Rat?
     
    Motor-Bastler, 31. März 2023
    #1
  2. Exl121150 Erfahrener User
    Hallo,

    die Sub Workbook_BeforeClose(Cancel As Boolean) ist ja doch nicht eine x-beliebige Sub, das ist ja doch eine Callback-Routine für das Excel-Arbeitsmappen-Ereignis BeforeClose. Dieses tritt stets ein, bevor eine Arbeitsmappe geschlossen wird.

    Die Cancel-Variable dient zu Folgendem: Falls sie den Wert "False" hat, zeigt das an, dass nach dem Verlassen dieser Sub die Arbeitsmappe tatsächlich geschlossen wird. Hat aber die Cancel-Variable nach dem Verlassen dieser Sub den Wert "True", wird das Schließen der Arbeitsmappe nicht ausgeführt. Dieser Mechanismus wird ausgeführt, egal durch was versucht wird, die Arbeitsmappe zu schließen. Sobald Cancel nach dem Ausführen von BeforeClose den Wert "True" hat, gibt es kein Schließen der Arbeitsmappe mehr.

    Falls du irgendwo einen Button "Arbeit beenden" hast und diesen anklicken willst, um die Arbeitsmappe zu schließen, so wird dieser Button die Arbeit verweigern, weil nämlich Cancel=True nach dem Verlassen von Workbook_BeforeClose seine Arbeit systematisch sabotieren wird.

    Wenn du haben möchtest, dass nicht jeder auf das "x" in der rechten oberen Fensterecke drauflatschen kann, sondern stets der Button "Arbeit beenden" geklickt werden muss, musst du diese unterschiedlichen Verhältnisse in der Sub Workbook_BeforeClose berücksichtigen, sodass im Fall des Button-Klickens Cancel auf False gesetzt wird und im Fall des "x"-Klickens Cancel auf True gestellt wird.

    Hat Cancel nach Ausführen von Workbook_BeforeClose den Wert True und soll dann folgende Anweisung ausgeführt werden:
    Workbooks("2_Quartal_2023.xlsm").Close SaveChanges:=True
    wird es ein Problem geben - ein Fehler wird generiert, denn das Close von "2_Quartal_2023.xlsm" kann nicht ausgeführt werden und ebenso nicht das "SaveChanges", obwohl es durch den VBA-Code verlangt wird.

    Du musst für diesen Fall eine Fehlerbehandlung in die Sub Commandbutton1_Click einbauen, zB. wie folgt:
    On Error Resume Next
    Workbooks("2_Quartal_2023.xlsm").Close SaveChanges:=True
    On Error GoTo 0

    Die erste der 3 Zeilen bewirkt, dass der Fehlerabbruch-Mechanismus ausgeschaltet/deaktiviert wird.
    In Zeile 2 muss dir aber klar sein, dass im Fall von Cancel=True kein "SaveChanges" und kein "Close" ausgeführt wird.
    Die dritte der 3 Zeilen bewirkt wieder ein sofortiges Einschalten des Fehlerabbruch-Mechanismus. Diese Abfolge ist unbedingt einzuhalten, denn sonst bist du hinterher total blind, was das Melden/Behandeln von Fehlersituationen anbelangt.
     
    Zuletzt bearbeitet: 31. März 2023
    Exl121150, 31. März 2023
    #2
  3. Danke für die erschöpfende Antwort, aber die Lösung war es dann doch nicht. Gruß
     
    Motor-Bastler, 31. März 2023
    #3
  4. RPP63_neu hat Ahnung

    EXCEL Datei schließen

    Moin!
    Mal nur die Programmlogik:
    Du brauchst zunächst mal eine globale Variable vom Typ Boolean.
    Diese gehört in ein allgemeine Modul:
    Modul Modul1
    Option Explicit 
     
    Global bCancel As Boolean 
    Diese wird im Open von DieseArbeitsmappe gefüllt:
    Private Sub Workbook_Open()
    bCancel = True
    End Sub
    Im Close wird jetzt diese Variable ausgewertet.
    Klickst Du das Schließen-Kreuz an, wird Cancel = bCancel zugewiesen,
    ergibt folglich True,
    die MsgBox erscheint
    und das Schließen wird abgebrochen:
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Cancel = bCancel
    If Cancel Then
      MsgBox "Datei kann nur über die Schaltfläche geschlossen werden!"
      Exit Sub
    End If
    End Sub
    Hinter dem CommandButton liegt folgender Code:
    Microsoft Excel Objekt Tabelle1
    Option Explicit 
     
    Private Sub CommandButton1_Click() 
    bCancel = False 
    ThisWorkbook.Close 
    End Sub 
    Gruß Ralf
     
    RPP63_neu, 1. April 2023
    #4
  5. Hallo, bedanke mich für die Antwort. Stell den Code für "Diese Arbeitsmappe" mal hier ein, so wie ich ihn zusammen- geschrieben habe. Die Zeile Global bCancel....... wird gleich rot markiert, und es erscheint ein Fehlertext "Fehler beim kompilieren....". Habe das auskommentiert, scheint aber ein Muss zu sein, nur weiß ich nicht wie es korrekt eingebaut wird.

    Code:
     Option Explicit
    
    '  Global bCancel As Boolean  ' Die Zeile wird in rot markiert und es erscheint ein Fehlertext
    
    Private Sub Workbook_Open()
    
    Dim bcancel As String
    
    bcancel = True
    
    End Sub
    
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    
    Dim bcancel As String
    
        Cancel = bcancel
    
            If Cancel Then
    
      MsgBox "Datei kann nur über die Schaltfläche geschlossen werden!"
     
            Exit Sub
        End If
    End Sub
    
     
    Motor-Bastler, 1. April 2023
    #5
  6. RPP63_neu hat Ahnung
    Die globale Variable gehört in ein allgemeines Modul!
    (Einfügen, Modul)
    Hatte ich aber bereits geschrieben.
    Ich lade mal meine Übungsdatei hoch.
     
    RPP63_neu, 1. April 2023
    #6
  7. Danke, aber ich will beim Beenden eine E-Mail generieren, die aus einer Tabelle entsprechende Informationen beinhaltet.
    Den Code dafür hatte ich zu Anfang mal eingestellt. Vielleicht kann man einen Blick in meine Datei werfen.
     
    Motor-Bastler, 1. April 2023
    #7
  8. RPP63_neu hat Ahnung

    EXCEL Datei schließen

    Ja und?
    Du hast doch das Grundgerüst, welches Dein Problem aus der Threaderöffnung löst.
    Einfügen wirst Du doch können?
    Falls nicht:
    Ich sehe es nicht als meine Aufgabe an, Komplettlösungen zu erstellen.
    Da dürfen gerne Leute mit Langeweile ran.
    Ich wünsche Dir (ehrlich!) viel Erfolg.
    Schließlich lernst Du nur durch Eigeninitiative und die dazu gehörigen Erfolgserlebnisse.
    EXCEL Datei schließen :cool:
     
    RPP63_neu, 1. April 2023
    #8
Thema:

EXCEL Datei schließen

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

  2. 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...
  3. Excel-Datei ohne Speichern schließen und mit MessageBox

    in Microsoft Excel Hilfe
    Excel-Datei ohne Speichern schließen und mit MessageBox: Hallo liebe Mitstreiter, ich bin momentan etwas festgefahren, ich habe eine Excel-Datei mit mehreren Arbeitsmappen erstellt, in die man Daten eingibt und woraufhin dann Formulare zum Ausdrucken...
  4. Mit Makro andere Excel-Datei öffnen, kopieren und schließen

    in Microsoft Excel Hilfe
    Mit Makro andere Excel-Datei öffnen, kopieren und schließen: Moin, ich sitzte seit längerem an einem Problem *rolleyes.gif* Ich würde gerne eine Excel Datei öffnen, dort einen Bereich kopieren z.b B21:E22, dann das ganze in eine andere Excel Datei an die...
  5. Makro vor dem Schließen einer Excel Datei

    in Microsoft Excel Hilfe
    Makro vor dem Schließen einer Excel Datei: Hi, ich bräuchte mal den Code für das Makro für eine Msgbox. Wir haben nämlich immer mal wieder Praktikaten die vor dem schließen der Datein vergessen bestimmte Dinge zu aktivieren oder zu...
  6. mit VBA .xlsx Datei schließen

    in Microsoft Excel Hilfe
    mit VBA .xlsx Datei schließen: Liebes Forum, ich habe ein Makro geschrieben, in dem als letzten Schritt eine .xlsx Datei geschlossen werden soll. Hat auch prima funktioniert. Jetzt habe ich jedoch ein SAP-Script am Anfang...
  7. Excel Datei über VBA öffnen und schließen ohne speichern

    in Microsoft Excel Hilfe
    Excel Datei über VBA öffnen und schließen ohne speichern: Hallo Leute, ich habe mal wieder ein Problem und kann mir nicht so richtig Erklären wodran es liegt. Ich bin mir sicher, dass es für euch eine Kleinigkeit seien wird. Hier mal mein Code...
  8. Excel 2010/VBA Datei öffnen, Makro ausführen, schließen

    in Microsoft Excel Hilfe
    Excel 2010/VBA Datei öffnen, Makro ausführen, schließen: Hallo! Ich habe die Datei 1234.xlsm in der ist ein Befehl/Makro im VBA gespeichert, die Tabelle selber ist leer. Beim öffnen der Datei soll der Befehl ausgeführt werden und dann soll sich die...
  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