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

saveAs Fehler 1004 beim überschreiben

Forumthread: saveAs Fehler 1004 beim überschreiben

saveAs Fehler 1004 beim überschreiben
26.11.2015 12:41:32
fledergeTier
Hallo,
meine Recherchen bringen mich nicht weiter - beim Schließen diverser Dokumente sollen folgende Punkte ablaufen:
- Sicherung Kopie
- Sicherung/Überschreiben der aktiven Datei
Mein Code:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWorkbook.SaveCopyAs Filename:= _
("MeinPfad1" & Format(Now, "yyMMdd_HH-MM") & " " & Sheets("Grundlagen").Range("I33") & ".xlsm")
Dim YesOrNoAnswerToMessageBox As String
Dim QuestionToMessageBox As String
Dim CurrentFile As String
QuestionToMessageBox = "Soll das Dokument gespeichert werden?"
YesOrNoAnswerToMessageBox = MsgBox(QuestionToMessageBox, vbYesNo, "Save file")
If YesOrNoAnswerToMessageBox = vbNo Then
MsgBox "Dokument wurde nicht gespeichert"
Else
CurrentFile = ThisWorkbook.FullName
ActiveWorkbook.SaveAs Filename:= _
( "MeinPfad2" & Sheets("Grundlagen").Range("I33") & ".xlsm"), FileFormat:=52
End If
End Sub


Das Speichern der Kopie klappt wunderbar und fehlerfrei. Beim erneuten Speichern ist alles gut, wenn ich bestätige, dass die Datei ersetzt werden soll ebenso. Wenn ich "Nein" oder "Abbrechen" wähle, kommt der tolle Laufzeitfehler 1004. Wähle ich "Debuggen" reklamiert er mein SaveAs, trotz FileFormat (es gibt noch mehr Makros xlsm ist erforderlich). Bei den meisten Kollegen (gleiche Excel-Version) kommt die Fehlermeldung immer wenn die Datei bereits vorhanden ist.
Anmerkung: Ich verstehe die meisten Codes, kann sie aber nicht selber anlegen.
Ich hoffe, irgendein netter Mensch an einem anderen Rechner kann helfen. Dieses blöde Makro treibt mich nämlich langsam aber sicher in den Wahnsinn.
Grüße vom fledergeTier

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: saveAs Fehler 1004 beim überschreiben
26.11.2015 13:04:57
Luschi
Hallo fledergeTier,
so solte ein Schuh draus werden:

If YesOrNoAnswerToMessageBox = vbNo Then
MsgBox "Dokument wurde nicht gespeichert"
Cancel = True
Exit Sub
Else
'sonst was
Endif
Gruß von Luschi
aus klein-Paris

Anzeige
AW: saveAs Fehler 1004 beim überschreiben
26.11.2015 14:12:29
fledergeTier
Hallo Luschi,
danke für deine schnelle Reaktion. Das gleiche Spiel wie immer - es hilft leider nichts, die Fehlermeldung kommt weiter "Die Methode SaveAs für das Objekt _Workbook ist fehlgeschlagen". Und beim Debuggen ist wieder die gleiche Stelle markiert.
Trotzdem danke und ich hoffe weiter...
Grüße vom
fledergeTier

Anzeige
AW: saveAs Fehler 1004 beim überschreiben
26.11.2015 14:17:54
fledergeTier
Haken für "nicht-beantwortet" war nicht gesetzt...

AW: saveAs Fehler 1004 beim überschreiben
02.12.2015 09:45:04
Werner
Hallo,
könnte es sein, dass du dich beim Lösungsvorschlag von Luschi durch die farbige Hervorhebung hast ablenken lassen?
Denn zusätzlich zu dem
Cancel = True
hat Luschi auch noch ein
Exit Sub
mit rein geschrieben. Die Prozedur sollte ja bei Abbruch auch verlassen werden und nicht weiter laufen. Du brauchst also beides im Code.
Cancel = True
Exit Sub
Gruß Werner
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Fehler 1004 beim Überschreiben mit SaveAs in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne die Excel-Arbeitsmappe, in der du das Makro implementieren möchtest.

  2. Gehe zu Entwicklertools > Visual Basic, um den VBA-Editor zu öffnen.

  3. Füge den folgenden Code in den entsprechenden Bereich ein:

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
       ActiveWorkbook.SaveCopyAs Filename:= _
           ("MeinPfad1" & Format(Now, "yyMMdd_HH-MM") & " " & Sheets("Grundlagen").Range("I33") & ".xlsm")
       Dim YesOrNoAnswerToMessageBox As String
       Dim QuestionToMessageBox As String
       Dim CurrentFile As String
       QuestionToMessageBox = "Soll das Dokument gespeichert werden?"
       YesOrNoAnswerToMessageBox = MsgBox(QuestionToMessageBox, vbYesNo, "Save file")
    
       If YesOrNoAnswerToMessageBox = vbNo Then
           MsgBox "Dokument wurde nicht gespeichert"
           Cancel = True ' Abbrechen des Schließvorgangs
           Exit Sub
       Else
           CurrentFile = ThisWorkbook.FullName
           ActiveWorkbook.SaveAs Filename:= _
               ("MeinPfad2" & Sheets("Grundlagen").Range("I33") & ".xlsm"), FileFormat:=52
       End If
    End Sub
  4. Stelle sicher, dass die Pfade (MeinPfad1 und MeinPfad2) korrekt sind und angepasst werden.

  5. Teste das Makro, indem du die Arbeitsmappe schließt und die Nachricht zur Speicherung bestätigst.


Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: Die Methode SaveAs für das Objekt _Workbook ist fehlgeschlagen.

    • Lösung: Stelle sicher, dass der Zielpfad existiert und dass du Schreibrechte für diesen Ordner hast. Überprüfe auch, ob die Datei bereits geöffnet ist.
  • Wenn "Nein" oder "Abbrechen" gewählt wird, tritt der Fehler auf.

    • Lösung: Achte darauf, dass der Code Cancel = True und Exit Sub enthält, damit die Prozedur bei Abbruch nicht weiterläuft.

Alternative Methoden

Wenn die Methode SaveAs weiterhin Probleme verursacht, kannst du alternative Ansätze in Betracht ziehen:

  1. Speichern unter einem neuen Namen:

    • Anstatt die Datei zu überschreiben, speichere sie immer unter einem neuen Namen:
      ActiveWorkbook.SaveAs Filename:="NeuerDateiname.xlsm", FileFormat:=52
  2. Verwendung von Workbook.Save:

    • Wenn du sicherstellen kannst, dass die Datei nicht existiert, kannst du Workbook.Save verwenden, um die Datei zu speichern, ohne den Dialog zu zeigen.

Praktische Beispiele

Hier ist ein einfaches Beispiel, um den Laufzeitfehler 1004 zu vermeiden:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim savePath As String
    savePath = "C:\Users\DeinBenutzername\Documents\deineDatei.xlsm"

    If Dir(savePath) <> "" Then
        If MsgBox("Die Datei existiert bereits. Möchtest du sie überschreiben?", vbYesNo) = vbNo Then
            Cancel = True
            Exit Sub
        End If
    End If

    ThisWorkbook.SaveAs Filename:=savePath, FileFormat:=52
End Sub

In diesem Beispiel wird vor dem Speichern überprüft, ob die Datei bereits existiert.


Tipps für Profis

  • Verwende Error Handling: Füge Fehlerbehandlungsroutinen hinzu, um Laufzeitfehler abzufangen:

    On Error GoTo ErrorHandler
    ' Dein Code hier
    Exit Sub
    ErrorHandler:
      MsgBox "Fehler: " & Err.Description
  • Nutze Dateipfade dynamisch: Speichere deine Dateien in einem Unterordner und verwende ThisWorkbook.Path, um den aktuellen Pfad automatisch zu nutzen.


FAQ: Häufige Fragen

1. Was bedeutet Laufzeitfehler 1004?
Dieser Fehler tritt auf, wenn eine Operation in Excel VBA nicht erfolgreich ausgeführt werden kann, z.B. wenn die Methode SaveAs fehlschlägt.

2. Wie kann ich sicherstellen, dass die Datei gespeichert wird?
Verwende die ThisWorkbook.Save Methode, wenn du sicher bist, dass keine Namenskonflikte bestehen. Andernfalls, implementiere die oben genannten Codebeispiele, um den Benutzer zu fragen, ob die Datei überschrieben werden soll.

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