Excel schließen ohne Speicher-Abfrage
#1
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
Antworten Top
#2
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
Antworten Top
#3
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
Antworten Top
#4
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
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Lutz Fricke
Antworten Top
#5
Hallo Uwe,

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

Application.DisplayAlerts = True

Vielen Dank,
Lutz
Antworten Top
#6
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
Antworten Top
#7
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
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Lutz Fricke
Antworten Top
#8
Hallo Uwe,

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

Gruß,
Lutz
Antworten Top
#9
Hallo Lutz,

wie genau hast Du das schon drin?

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


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste