Abfrage beim Schließen einer Excel-Datei mit VBA
Schritt-für-Schritt-Anleitung
Um eine Abfrage zu implementieren, bevor die Excel-Datei geschlossen wird, kannst du den folgenden VBA-Code verwenden. Dieser Code fragt den Benutzer, ob er die Datei in zwei Ordnern speichern möchte, und berücksichtigt die Eingabe des Benutzers.
- Öffne die Excel-Datei und drücke
ALT + F11, um den VBA-Editor zu öffnen.
- Doppelklicke im Projektfenster auf
ThisWorkbook, um das Codefenster zu öffnen.
- Füge den folgenden Code ein:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim response As VbMsgBoxResult
response = MsgBox("In zwei Ordnern speichern?", vbYesNoCancel + vbQuestion)
Select Case response
Case vbCancel
Cancel = True ' Datei bleibt geöffnet
Case vbYes
' Hier den Dateispeicherort anpassen
ActiveWorkbook.SaveAs Filename:="L:\T\All\Daten\Formular\Test " & Application.Username & " " & Format(Now, "yyyy_mm_dd_hhmm") & ".xlsb"
ActiveWorkbook.SaveAs Filename:="L:\T\All\Daten\Formular\erl\Test " & Application.Username & " " & Format(Now, "yyyy_mm_dd_hhmm") & ".xlsb"
Case vbNo
' Datei nicht speichern
End Select
End Sub
- Schließe den VBA-Editor und teste die Funktionalität, indem du die Excel-Datei schließt.
Häufige Fehler und Lösungen
Alternative Methoden
Eine alternative Methode zur Abfrage vor dem Schließen einer Datei ist die Verwendung des Workbook_BeforePrint-Ereignisses. Dieser Ansatz kann hilfreich sein, wenn du zusätzliche Abfragen beim Drucken einfügen möchtest.
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If MsgBox("Möchtest du drucken?", vbYesNo + vbQuestion) = vbNo Then
Cancel = True ' Druckvorgang abbrechen
End If
End Sub
Praktische Beispiele
-
Beispiel für einen Dateinamen, der den Benutzer und das Datum enthält:
ActiveWorkbook.SaveAs Filename:="L:\T\All\Daten\Formular\ Test " & Application.Username & " " & Format(Now, "yyyy_mm_dd_hhmm") & ".xlsb"
-
Beispiel für die Verwendung von Environ:
Dim userName As String
userName = Environ("Username")
Dieser Code gibt dir den Windows-Anmeldenamen des Benutzers, den du für den Dateinamen verwenden kannst.
Tipps für Profis
- Nutze
ByVal in deinen Funktionen, um sicherzustellen, dass die Parameter nicht außerhalb der Funktion verändert werden.
- Verwende
Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft, Fehler im Code zu vermeiden.
- Experimentiere mit verschiedenen
MsgBox-Optionen, um das Benutzererlebnis zu verbessern.
FAQ: Häufige Fragen
1. Was bedeutet Cancel As Boolean?
Cancel As Boolean ist ein Parameter, der angibt, ob das Schließen der Datei abgebrochen werden soll. Setze ihn auf True, um das Schließen der Datei zu verhindern.
2. Wie kann ich den aktuellen Benutzernamen in Excel abrufen?
Du kannst den aktuellen Benutzernamen mit Application.Username oder Environ("Username") abrufen. Der erste gibt den in den Office-Stammdaten eingetragenen Namen zurück, während der zweite den Windows-Anmeldenamen liefert.