Clever-Excel-Forum

Normale Version: Excel schließen ohne Speicher-Abfrage
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo wertes Forum,

ich habe ein Problem beim Schließen von Excel.

Mein angehängter Code schließt eine Reihe von Dateien, die in einer zweiten Excel-Instanz geöffnet sind. Abschließend wird die Instanz geschlossen:
Code:
Application.DisplayAlerts = False
With wkbZMB52
    If .Parent.Workbooks.Count > 1 Then
        .Close savechanges:=False
    Else
        .Parent.Quit
    End If
End With

With wkbCOOISPIOrders
    If .Parent.Workbooks.Count > 1 Then
        .Close savechanges:=False
    Else
        .Parent.Quit
    End If
End With

With wkbCOOISPIComp
    If .Parent.Workbooks.Count > 1 Then
        .Close savechanges:=False
    Else
        .Parent.Quit
    End If
End With
Application.DisplayAlerts = True
Allerdings bekomme ich bei der Zeile .Parent.Quit immer die Abfrage, ob Änderungen in der Mappe gespeichert werden sollen.
Wie bekomme ich Excel ohne diese Meldung geschlossen?

Vielen Dank,
Lutz
Hallo

was passiert wenn du statt Quit den Befehl  Close mit savechanges:=False verwendest???  Einfach mal ausprobieren!   Würde mich freuen wenn es klappt.

mfg Gast 123
Hallo Gast 123,

bei
Code:
.Parent.Close savechanges:=False
kommt die Fehlermeldung, dass das Objekt die Methode nicht unterstützt.

Bei
Code:
.Close savechanges:=False
kommt die Meldung, dass sich Daten in der Zwischenablage befinden.
Anschließend bleibt ein leeres Excel stehen. Und genau das wollte ich ja mit meinem Vorgehen vermeiden.

Gruß,
Lutz
Hallo Lutz,

vielleicht so:

Code:
With wkbZMB52
    .Saved = True
    If .Parent.Workbooks.Count > 1 Then
        .Close
    Else
        .Parent.Quit
    End If
End With

Gruß Uwe
Hallo Uwe,

manchmal ist die Welt so einfach...
Geht sogar ohne
Code:
Application.DisplayAlerts = False

Application.DisplayAlerts = True

Vielen Dank,
Lutz
Hallo zusammen,

war jetzt doch nicht ganz in Ordnung. Von Zeit zu Zeit hat der Code wegen einer gefüllten Zwischenablage gemeckert.
Habe dann die Zwischenablge vor dem Schließen geleert:
Code:
Public Declare Function OpenClipboard& Lib "user32" (ByVal hwnd As Long)
Public Declare Function EmptyClipboard Lib "user32" () As Long
Public Declare Function CloseClipboard& Lib "user32" ()
Code:
OpenClipboard 0&
EmptyClipboard
CloseClipboard
und jetzt scheint's zu laufen.

Gruß,
Lutz
Hallo Lutz,

vielleicht würde das schon reichen:

Code:
With wkbZMB52
        .Parent.CutCopyMode = False
        .Saved = True
        If .Parent.Workbooks.Count > 1 Then
            .Close
        Else
            .Parent.Quit
        End If
    End With

Gruß Uwe
Hallo Uwe,

habe ich ohnehin schon nach jedem Kopiervorgang drin, aber hat nicht funktioniert.
Daher der aufwändige Weg.

Gruß,
Lutz
Hallo Lutz,

wie genau hast Du das schon drin?

Gruß Uwe
Code:
wksZMB52.UsedRange.Copy
With wksTWZMB52.Cells(1, 1)
    .PasteSpecial Paste:=xlPasteValues
    .PasteSpecial Paste:=xlPasteFormats
End With
Application.CutCopyMode = False
Seiten: 1 2