Freigeben über

Excel-VBA_Cancel = True in workbook_beforesave geht nicht

Anonym
2021-01-13T16:54:50+00:00

Hallo,

könnte bitte jemand diesen Code ausprobieren? Normalerweise müsste die Speicherroutine abgebrochen werden. Tut sie aber nicht. Ich habe nur eine komplett neue Arbeitsmappe offen und diese wird trotz Cancel = True gespeichert bzw. geht beim ersten mal der Speicherdialog auf.

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

Cancel = True

End Sub

Microsoft 365 und Office | Excel | Für Zuhause | Windows

Gesperrte Frage. Diese Frage wurde aus der Microsoft-Support-Community migriert. Sie können darüber abstimmen, ob sie hilfreich ist, aber Sie können keine Kommentare oder Antworten hinzufügen oder der Frage folgen.

0 Kommentare Keine Kommentare
{count} Stimme

6 Antworten

Sortieren nach: Am hilfreichsten
  1. Andreas Killer 144K Zuverlässigkeitspunkte Freiwilliger Moderator
    2021-01-13T17:07:17+00:00

    Der Code funktioniert so nur innerhalb der Datei für diese eine Datei wenn er im Modul "DieseArbeitsmappe" ist.

    Mach eine MsgBox rein, ich denke mal er wird gar nicht ausgeführt, wahrscheinlich sind die Events aus oder Makros deaktiviert sind.

    Andreas.

    0 Kommentare Keine Kommentare
  2. Anonym
    2021-01-13T17:13:40+00:00

    Hallo Andreas,

    der Code steht bei mir in "DieseArbeitsmappe" im Private Sub Workbook_BeforeSave Event. Makros sind aktiviert und alle anderen Makros funktionieren auch. Heißt das der Code funktioniert bei dir? Ich habe auch testweise nur eine Datei geöffnet und extra lediglich Cancel = True eingegeben um die Funktion zu testen. Die MsgBox kommt auch aber das Dokument wird trotzdem gespeichert. Ich habe es eben nochmal mit Excel 365 auf meinem Privatrechner probiert da funktioniert es auch nicht. Er kommt bei Excel 365 sogar aus der Speicherroutine gar nicht mehr raus und geht immer wieder in die Prozedur BeforeSave rein. In einem Youtube Video habe ich gesehen, dass es mit Excel 2010 wohl noch funktioniert. Ich kann mir aber nicht vorstellen, dass hier ein Bug vorliegen kann.

    Grüße

    Steffen

    0 Kommentare Keine Kommentare
  3. Andreas Killer 144K Zuverlässigkeitspunkte Freiwilliger Moderator
    2021-01-14T17:17:02+00:00

    Er kommt bei Excel 365 sogar aus der Speicherroutine gar nicht mehr raus und geht immer wieder in die Prozedur BeforeSave rein. In einem Youtube Video habe ich gesehen, dass es mit Excel 2010 wohl noch funktioniert. 

    Na dann haben wir ja jetzt einen schönen Mix, die Frage stellst Du für Excel 2013, Du hast aber Excel 365 und kuckst Video's für Excel 2010. :-)

    In diesem Fall ist es wurscht, weil das in allen Versionen gleich funktioniert.

    Der einzige Unterschied den es seit 2013 gibt ist das zuerst die "Speichern unter" Seite in Excel angezeigt wird wenn man auf Speichern klickt. Erst beim Klick auf "Durchsuchen" wird das Ereignis ausgelöst und das Speichern abgebrochen. Das ist halt so...

    Gespeichert wird die Datei nicht und man kommt auch ohne Probleme da wieder raus. Wenn das bei Dir nicht der Fall ist, dann läuft da irgendwas anderes was ein Speichern erzwingen will, Makros, AddIns... oder was die Ereignisse nach dem ersten Mal unterdrückt.

    Da fällt mir was ein, letztens wurde eine ähnliche Frage für Excel 2016 im Forum gestellt, da stellte sich nach etlichem Rätselraten heraus das nicht alle Updates installiert waren...

    https://answers.microsoft.com/en-us/msoffice/forum/all/private-sub-workbookbeforeclosecancel-as-boolean/33b9ae06-c5bd-4074-987e-f2e9533e2858

    Andreas.

    0 Kommentare Keine Kommentare
  4. Anonym
    2021-01-14T17:47:10+00:00

    Hallo Andreas,

    mit der von dir vorgeschlagenen MsgBox funktioniert es aber:

    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _

            Cancel As Boolean)

    Dim a As Integer

    a = MsgBox("Wollen sie die Mappe speichern?", vbYesNo)

    If a = vbNo Then Cancel = True

    End Sub

    Claus

    0 Kommentare Keine Kommentare
  5. Anonym
    2021-01-14T20:15:56+00:00

    Hallo Andreas,

    auf meinem Arbeitsrechner habe ich Excel 2013. Auf meinem Privatrechner Excel 365 und das Video habe ich halt für Excel 2010 gefunden. Auf meinem Mac habe ich sogar noch Office 2008 ;-) Ich habe mittlerweile herausgefunden, dass es in einer Citrix-Umgebung funktioniert. Scheint also von den Einstellungen abzuhängen. Leider habe ich nicht herausgefunden an welcher.

    Danke trotzdem für deine Hilfe.

    VG

    0 Kommentare Keine Kommentare