Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Excel per VBA beenden

Forumthread: Excel per VBA beenden

Excel per VBA beenden
16.12.2024 21:03:06
JensS
Guten Abend zusammen,

ich möchte per Button eine Excel-Datei speichern und diese dann samt Excel schliesen wenn keine weitere Instanz geöffnet ist.
Mit dem nachfolgenden Code geschieht dies zwar, jedoch wird nach Excel (ohne leeres Arbeitsblatt) wieder geöffnet.
Ich kann mir das Verhalten nicht erklären und bitte um Eure Hilfe.

Danke Jens


Sub SpeichernUndSchliessen()
Dim wbCount As Integer

' Speichere die aktuelle Arbeitsmappe
ThisWorkbook.Save

' Anzahl der geöffneten Arbeitsmappen zählen
wbCount = Application.Workbooks.Count

' Schließe die aktuelle Arbeitsmappe
ThisWorkbook.Close SaveChanges:=True

' Überprüfe, ob andere Arbeitsmappen geöffnet sind
If wbCount = 1 Then
' Anwendung beenden, wenn keine weiteren Arbeitsmappen geöffnet sind
Application.Quit
End If
End Sub
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel per VBA beenden
16.12.2024 22:14:41
Kuwer
Hallo Jens,

funktioniert es so?

Sub SpeichernUndSchliessen()

Dim oWb As Workbook
Dim wbCount As Integer

' Anzahl der geöffneten (sichtbaren) Arbeitsmappen zählen
For Each oWb In Workbooks
i = i - oWb.Windows(1).Visible
Next oWb

' Schließe die aktuelle Arbeitsmappe
ThisWorkbook.Close SaveChanges:=True

' Überprüfe, ob andere Arbeitsmappen geöffnet sind
If wbCount = 1 Then
' Anwendung beenden, wenn keine weiteren (sichtbaren) Arbeitsmappen geöffnet sind
Application.Quit
End If
End Sub

Gruß, Uwe
Anzeige
Korrektur
16.12.2024 22:43:07
Kuwer
Jetzt mit richtigen Variablen:
Sub SpeichernUndSchliessen()

Dim oWb As Workbook
Dim wbCount As Integer

' Anzahl der geöffneten (sichtbaren) Arbeitsmappen zählen
For Each oWb In Workbooks
wbCount = wbCount - oWb.Windows(1).Visible
Next oWb

' Schließe die aktuelle Arbeitsmappe
ThisWorkbook.Close SaveChanges:=True

' Überprüfe, ob andere Arbeitsmappen geöffnet sind
If wbCount = 1 Then
' Anwendung beenden, wenn keine weiteren (sichtbaren) Arbeitsmappen geöffnet sind
Application.Quit
End If
End Sub
Anzeige
Korrektur 2 ;-)
16.12.2024 23:00:51
Kuwer
Jetzt auch getestet:
Sub SpeichernUndSchliessen()

Dim oWb As Workbook
Dim wbCount As Integer

' Anzahl der geöffneten (sichtbaren) Arbeitsmappen zählen
For Each oWb In Workbooks
wbCount = wbCount - oWb.Windows(1).Visible
Next oWb

' Überprüfe, ob andere Arbeitsmappen geöffnet sind
If wbCount = 1 Then
' Anwendung beenden, wenn keine weiteren (sichtbaren) Arbeitsmappen geöffnet sind
ThisWorkbook.Save
Application.Quit
Else
' Schließe die aktuelle Arbeitsmappe
ThisWorkbook.Close SaveChanges:=True
End If
End Sub
Anzeige
AW: Korrektur 2 ;-)
16.12.2024 23:09:14
JensS
Hallo Uwe,

auch in diesem Fall fragt Excel NOCH MAL nach, ob gespeichert werden soll.
Kann man das noch abstellen ?
AW: Excel per VBA beenden
16.12.2024 22:16:48
mumpel
Hallo!

Versuch es mal mit Application.CommandBars.ExecuteMso "FileExit" anstelle von Application.Quit.

Gruß, René
AW: Excel per VBA beenden
16.12.2024 22:28:11
daniel
Hi

Sollte nicht ein einfaches

Thisworkbbok.close True


ausreichen?

Seit Excel 2013 gibt es kein extra Applikations Fenster mehr, dass ohne Datei geöffnte sein kann. Mit dem Schließen der letzte offenen Datei wird auch Excel als Anwendung beendet.

Im Zweifelsfall aber auch so

Thisworbook.save

If Application.Workbooks.Count = 1 then
Application.Quit
Else
This workbook.close
End if


Gruß Daniel
Anzeige
AW: Excel per VBA beenden
17.12.2024 12:22:34
Ulf
Hi,
seinereiner macht das so


Public Sub allesBeenden()
Dim wb As Workbook
Dim strDiese As String
Dim bMoreBooks As Boolean
strDiese = ThisWorkbook.Name
For Each wb In Application.Workbooks
If wb.Name > strDiese And LCase$(wb.Name) > "personal.xlsb" Then
bMoreBooks = True
Exit For
End If
Next wb
If ThisWorkbook.Saved Then
If bMoreBooks Then
ThisWorkbook.Close SaveChanges:=False
Else
Application.Quit
End If
Else
ThisWorkbook.Close SaveChanges:=True
If Not bMoreBooks Then
Application.Quit
End If
End If
End Sub

hth
Ulf
Anzeige
AW: Excel per VBA beenden
17.12.2024 14:43:36
mumpel
Du vergisst mögliche installierte Add-Ins, die auch als Workbook gezählt werden. Dieses Problem hatte ich auch schon.
AW: Excel per VBA beenden
16.12.2024 22:37:36
mumpel
"Mit dem Schließen der letzte offenen Datei wird auch Excel als Anwendung beendet. "
Eben nicht. Es ist umgekehrt. Wenn man die letzte offene Datei schließt, bleibt ein leeres Fenster übrig. Meiner Erfahrung nach gibt es einen Unterschied zwischen "Quit" und "FileExit". Bei "Quit" wird Excel nicht beenden, bei "FileExit" schon. Daher würde ich immer mit Appliccation.CommandBars.ExecuteMso "FileExit" arbeiten. Den Befehl "Beenden" gibt es im Officemenü schon lange nicht mehr, denn muss man selber einfügen (dafür gibt es auf meiner Hompepage ein passendes Add-In).
Anzeige
AW: Excel per VBA beenden
16.12.2024 22:44:45
JensS
Ich hatte den Code bisher warum auch immer in einem Modul liegen.

Jetzt ins Worksheet eingegeben funktioniert fast … denn Excel fragt NOCHMALS, ob die Datei gespeichert werden soll, was aber eigentlich nicht sein soll.



Sub ENDE()
ThisWorkbook.Save
If Application.Workbooks.Count = 1 Then
Application.Quit
Else
ThisWorkbook.Save
ThisWorkbook.Close
End If
End Sub
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige