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

Forumthread: VBA - Speichern einer Datei

VBA - Speichern einer Datei
12.03.2020 14:30:36
Marcel
Mahlzeit,
habe in Excel VBA folgedes Problem. Habe ein Formular welches entweder als Vorlage oder als Excel-Datei mit Macro gespeichert werden soll. Dazu habe ich unten folgenden Code geschrieben. Problem ist folgendes, dass wenn eine Änderung vorgenommen wird und mittels Schließen-Button (X-Button oben rechts) die Datei geschlossen wird, dann erscheint die Abfrage ob die Datei gespeichert werden soll. Wird dies mit ja bestätigt wird die Datei zwar gespeichert aber der Dialog erscheint wieder. Dies kann man solange machen bis man keine Lust mehr hat. Das Dialogfeld verschwindet nicht. Zwar Kann ich auf nicht speichern klicken aber dann wird die Datei nicht gespeichert.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Dim varWorkbookName As String
'Abfrage auf admin ändern
Application.EnableEvents = False
Call verstecken
If SaveAsUI = True Then
varWorkbookName = Application.GetSaveAsFilename( _
fileFilter:="Excel Macro Enabled Workbook (*.xlsm), *.xlsm, Excel Macro Enabled  _
Template (*.xltm), *.xltm, PDF, *.pdf")
Cancel = True
If varWorkbookName  "Falsch" Then
If Application.Version > 11 Then
If Right(varWorkbookName, 4) = "xlsm" Then
vartyp = xlOpenXMLWorkbookMacroEnabled
Else
vartyp = xlOpenXMLTemplateMacroEnabled '52,53
End If
ActiveWorkbook.SaveAs Filename:=varWorkbookName, FileFormat:=vartyp
Else
Debug.Print ("No valid application version")
End If
End If
Else
Cancel = True
ActiveWorkbook.Save
End If
Call anzeigen
Application.EnableEvents = True
Exit Sub
ErrorHandler:
Call validFunctions.ErrorHandler(Err)
EndOfSub:
'Sub will end
End Sub

Gruß Marcel.
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Speichern einer Datei
12.03.2020 14:33:30
Thorben
Schreib ActiveWorkbook.Save mal außerhalb der If bedingung.
AW: VBA - Speichern einer Datei
12.03.2020 15:18:49
Marcel
Danke dir werde ich ausprobieren.
Übrigens muss ich meine Aussage revidieren, dass es immer geschieht. Scheint nur sporadisch aufzutreten.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA - Speichern einer Datei in Excel


Schritt-für-Schritt-Anleitung

Um eine Excel-Datei über VBA zu speichern, kannst du den folgenden Code verwenden. Achte darauf, dass du die Logik entsprechend deinem Bedarf anpasst:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim varWorkbookName As String
    Application.EnableEvents = False

    If SaveAsUI = True Then
        varWorkbookName = Application.GetSaveAsFilename( _
            fileFilter:="Excel Macro Enabled Workbook (*.xlsm), *.xlsm, Excel Macro Enabled Template (*.xltm), *.xltm, PDF, *.pdf")
        Cancel = True

        If varWorkbookName <> "Falsch" Then
            Dim vartyp As XlFileFormat
            If Application.Version > 11 Then
                If Right(varWorkbookName, 4) = "xlsm" Then
                    vartyp = xlOpenXMLWorkbookMacroEnabled
                Else
                    vartyp = xlOpenXMLTemplateMacroEnabled
                End If
                ActiveWorkbook.SaveAs Filename:=varWorkbookName, FileFormat:=vartyp
            Else
                Debug.Print ("No valid application version")
            End If
        End If
    Else
        Cancel = True
        ActiveWorkbook.Save
    End If

    Application.EnableEvents = True
End Sub

Dieser Code stellt sicher, dass beim Speichern einer Excel-Arbeitsmappe die Benutzeranfrage erscheint und die Datei korrekt gespeichert wird.


Häufige Fehler und Lösungen

Problem: Das Dialogfeld zum Speichern erscheint wiederholt, nachdem du "Ja" gewählt hast.

Lösung: Stelle sicher, dass der Befehl ActiveWorkbook.Save nicht innerhalb einer Bedingung ist. So wird die Datei sofort gespeichert, ohne dass das Dialogfeld erneut erscheint. Verschiebe den Code wie von Thorben empfohlen nach außen.


Alternative Methoden

Es gibt verschiedene Möglichkeiten, um eine Excel-Datei mit VBA zu speichern. Eine einfache Methode ist die Verwendung von ThisWorkbook.Save. Hier ist ein Beispiel:

ThisWorkbook.Save

Diese Methode speichert die aktuelle Arbeitsmappe ohne Dialogfeld und ist ideal, wenn du sicher bist, dass die Datei bereits einen Namen hat und im richtigen Format gespeichert ist.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du eine Excel-Datei automatisch speichern kannst, wenn ein bestimmtes Ereignis eintritt, z.B. das Schließen der Arbeitsmappe:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If MsgBox("Möchtest du die Datei speichern?", vbYesNo) = vbYes Then
        ThisWorkbook.Save
    End If
End Sub

Dies fragt den Benutzer beim Schließen der Datei, ob er speichern möchte, und führt den Speichervorgang durch.


Tipps für Profis

  • Verwende On Error-Anweisungen: Füge Fehlerbehandlungsroutinen hinzu, um sicherzustellen, dass dein Code auch bei Problemen stabil bleibt.
  • Automatisiere den Speicherort: Du kannst vordefinierte Speicherorte verwenden, um die Benutzerfreundlichkeit zu verbessern.
  • Makros zur Sicherung: Erstelle ein Excel-Makro, das regelmäßig eine Sicherungskopie deiner Arbeitsmappe speichert.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass meine Excel-Datei im richtigen Format gespeichert wird?
Verwende den FileFormat-Parameter im SaveAs-Befehl, um das gewünschte Format anzugeben.

2. Was tun, wenn der Befehl ActiveWorkbook.Save nicht funktioniert?
Stelle sicher, dass du keine unerwarteten Bedingungen hast, die das Speichern verhindern. Teste den Code schrittweise.

3. Kann ich den Speicherdialog anpassen?
Ja, du kannst die GetSaveAsFilename-Methode verwenden, um Filter und Standarddateinamen anzupassen.

4. Wie speichere ich eine Excel-Arbeitsmappe automatisch beim Schließen?
Verwende das Workbook_BeforeClose-Ereignis, um eine Abfrage anzuzeigen und die Datei bei Zustimmung zu speichern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige