Office: (Office 2016) Datei Schließen (Bei Schreibschutz ohne speichern, ohne Schreibschutz speichern) VBA

Helfe beim Thema Datei Schließen (Bei Schreibschutz ohne speichern, ohne Schreibschutz speichern) VBA in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich möchte per VBA beim beenden bzw. schließen der Datei abfragen ob diese Schreibgeschützt geöffnet ist. 1. Ist Datei... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von MHS1002, 12. Februar 2020.

  1. MHS1002 Erfahrener User

    Datei Schließen (Bei Schreibschutz ohne speichern, ohne Schreibschutz speichern) VBA


    Hallo zusammen,
    ich möchte per VBA beim beenden bzw. schließen der Datei abfragen ob diese Schreibgeschützt geöffnet ist.

    1. Ist Datei Schreibgeschützt dann schließen, nicht speichern, nicht nachfragen nach speichern
    2. Datei ist nicht Schreibgeschützt geöffnet, speichern, nicht nachfragen nach speichern

    Ich habe folgende Codes in einem Modul bzw. in der Arbeitsmappe:

    Modul:
    HTML:
    Option Explicit                                     ' Variablendefinition erforderlich
    Dim DaEt As Date                                    ' Zeitpunkt zum prüfen
    Public Const DaZeit As Date = "00:05:00"            ' Zeitabstand prüfen
    
    Sub startzeit()
        On Error Resume Next                            ' Fehlerbehandlung ausschalten
        ' Makro anhalten
        Application.OnTime EarliestTime:=DaEt, Procedure:="Schließen", Schedule:=False
        On Error GoTo 0                                 ' Fehlerbehandlung einschalten
        DaEt = Now + DaZeit                             ' neue Startzeit setzen
        Application.OnTime DaEt, "Schließen"            ' Makro zum Zeitpunkt starten
    End Sub
    
    Sub Schließen()
    Windows("Tier3 2020.xlsm").Activate
    
    Dim wsTab As Worksheet
        Dim i As Integer
        For i = 1 To 13
        Dim rngWerte As Range
        Dim rngFormeln As Range
        On Error Resume Next
        On Error GoTo 0
      
          Next i
          
            ThisWorkbook.Save
            
                
       ThisWorkbook.Save
        
        On Error Resume Next                            ' Fehlerbehandlung ausschalten
       
      Ende
        ThisWorkbook.Close True                        ' Datei schließen mit speichern, False ohne speichern
    End Sub
    
    Sub Ende()
        ' Makro anhalten
        Application.OnTime EarliestTime:=DaEt, Procedure:="Schließen", Schedule:=False
        
      
    
    End Sub
    Arbeitsmappe:
    HTML:
                                        ' Variablendefinition erforderlich
                                         ' Variablendefinition erforderlich
    Private Sub Workbook_Open()
    
        startzeit                                       ' Prozedur starten
    End Sub
    
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
        startzeit                                       ' Prozedur starten
    End Sub
    
    Private Sub ThisWorkbook_BeforeClose(Cancel As Boolean)
    'Windows("Tier3 2020.xlsm").Activate
    
    'Dim wsTab As Worksheet
        'Dim i As Integer
        'For i = 1 To 13
        'Dim rngWerte As Range
        'Dim rngFormeln As Range
        On Error Resume Next
        On Error GoTo 0
      
          Next i
                ThisWorkbook.Save
       
        
        On Error Resume Next                            ' Fehlerbehandlung ausschalten
       
      Ende
        ThisWorkbook.Close False                         ' Datei schließen mit speichern, False ohne speichern
    End Sub
    
    
    
    Ich hoffe ich konnte mich einigermaßen ausdrücken ;-).

    Danke für die Unterstützung
    Grüße MHS1002
     
    MHS1002, 12. Februar 2020
    #1
  2. Exl121150 Erfahrener User
    Hallo,

    die Anweisungsabfolge müsste IMHO lauten:
    Code:
    '.....
       On Error Resume Next
       ActiveWorkbook.Save
       On Error GoTo 0
    '.....
    
    Anmerkungen:
    • Mit "On Error GoTo Sprungmarke1" wird eine Fehlerbehandlung eingeschaltet, sodass das Programm auf einen möglicherweise auftretenden Fehler ohne Programmabbruch reagieren kann. Tritt nach dieser Programmzeile tatsächlich ein Fehler auf, springt das Programm zur Programmzeile, die mit der Marke "Sprungmarke1:" gekennzeichnet ist, und fährt dort fort, bis es zur Anweisung "Resume Sprungmarke2" gelangt. Daraufhin verlässt das Programm den Programmbereich, der für die Fehlerbehandlung zuständig ist, löscht das vorhin erzeugte "Err"-Objekt und springt zu der Programmzeile mit der Marke "Sprungmarke2:".
    • Mit "On Error GoTo 0" kann man die Fehlerbehandlung explizit ausschalten. Tritt nach dieser Programmzeile ein Fehler auf, bricht das Programm mit Fehlermeldung ab.
    • Mit "On Error Resume Next" kann man erreichen, dass zwar eine Fehlerbehandlung eingeschaltet wird, aber das Programm verzweigt nirgendwohin, sondern fährt in der nächsten Programmzeile fort. Die Fehlerbehandlung ist quasi "stumm" geschaltet. Man könnte aber nichtsdestotrotz in diesem Fall vom erzeugten "Err"-Objekt die "Err.Number" bzw. "Err.Description" erfragen, etc. bzw. mit "Err.Clear" den erzeugten Fehler wieder löschen.
    • Statt "ActiveWorkbook.Save" kann man auch "ThisWorkbook.Save" einsetzen - man muss sich nur über den Unterschied im Klaren sein: Ob man die aktive Arbeitsmappe speichern will oder aber die Arbeitsmappe, in der dieses Makro enthalten ist (Das ist nur dann wichtig, wenn man mehrere Arbeitsmappen gleichzeitig geöffnet hat).
     
    Exl121150, 14. Februar 2020
    #2
  3. MHS1002 Erfahrener User
    Hi und danke für die Antwort. Da steig ich leider nicht richtig durch ;-)
    Ich denke ich habe das Problem wie folgt lösen können, falls noch was falsch ist gerne verbessern. Vielen Dank!

    HTML:
    Option Explicit                                     ' Variablendefinition erforderlich
    Dim DaEt As Date                                    ' Zeitpunkt zum prüfen
    Public Const DaZeit As Date = "00:05:00"            ' Zeitabstand prüfen
    
    Sub startzeit()
        On Error Resume Next                            ' Fehlerbehandlung ausschalten
        ' Makro anhalten
        Application.OnTime EarliestTime:=DaEt, Procedure:="Schließen", Schedule:=False
        On Error GoTo 0                                 ' Fehlerbehandlung einschalten
        DaEt = Now + DaZeit                             ' neue Startzeit setzen
        Application.OnTime DaEt, "Schließen"            ' Makro zum Zeitpunkt starten
    End Sub
    
    Sub Schließen()
    Windows("Tier3 2020.xlsm").Activate
    
    Dim wsTab As Worksheet
        Dim i As Integer
        For i = 1 To 13
        Dim rngWerte As Range
        Dim rngFormeln As Range
        On Error Resume Next
        On Error GoTo 0
      
         Next i
        'ThisWorkbook.Save
       
        
        On Error Resume Next                            ' Fehlerbehandlung ausschalten
       
      Ende
        'ThisWorkbook.Close True                         ' Datei schließen mit speichern, False ohne speichern
        
        
         If ThisWorkbook.ReadOnly Then ThisWorkbook.Saved = True
     'If ThisWorkbook.ReadOnly Then MsgBox "Datei war schreibgeschützt. Änderungen wurden nicht gespeichert!", , "Datei war schreibgeschützt."
     If ThisWorkbook.ReadOnly = False Then ThisWorkbook.Close savechanges:=True
    End Sub
    
    Sub Ende()
        ' Makro anhalten
        Application.OnTime EarliestTime:=DaEt, Procedure:="Schließen", Schedule:=False
    End Sub
     
    MHS1002, 16. Februar 2020
    #3
Thema:

Datei Schließen (Bei Schreibschutz ohne speichern, ohne Schreibschutz speichern) VBA

Die Seite wird geladen...
  1. Datei Schließen (Bei Schreibschutz ohne speichern, ohne Schreibschutz speichern) VBA - Similar Threads - Datei Schließen Schreibschutz

  2. 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")...
  3. 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...
  4. Datei schließen nach bestimmter Zeit.

    in Microsoft Excel Hilfe
    Datei schließen nach bestimmter Zeit.: Hallo Zusammen, habe ein paar Dateien die ich auch gerne von zu Hause bearbeiten möchte. In diese Dateien habe ich ein Makro aus dem Netz eingebaut. Es gibt auch noch ein Makro welches alle 30...
  5. 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...
  6. 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...
  7. automatisches Speichern von Word Dateien beim Schließen

    in Microsoft Word Hilfe
    automatisches Speichern von Word Dateien beim Schließen: gerne würde ich meine WORD 2016 Datei automatisch abspeichern beim Schließen, ohne den Antrag "Möchten sie ihre Änderungen an.." angezeigt wird.:confused::confused::confused: Leider habe ich...
  8. 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...
  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