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

Forumthread: PROBLEME BEIM SPEICHERN UNTER

PROBLEME BEIM SPEICHERN UNTER
04.10.2004 12:19:17
christoph
HALLO ZUSAMMEN.
Ich speicher in meinem Tool über Application.GetSaveAsFilename einzelne Tabellenblätter, was auch so funktioniert wie ich es mir vorstelle.
Nur wenn bereits eine Datei mit dem entsprechenden Namen existiert kommt die Mitteilung:
"Die Datei mit dem Namen ... existiert schon an diesem Platz.soll sie ersetzt werden" "Ja" "Nein" "Abbrechen".
Klicke ich auf "Ja" läuft alles Prima, aber wenn ich auf nein oder Abbrechen Klicke kommt eine Fehlermeldung.
Hat jemand eine Ahnung welchen Name die Aplikation hat, damit ich die Fehlermeldung abfangen kann?
Danke für Hilfe und Anregungen
Christoph
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: PROBLEME BEIM SPEICHERN UNTER
Ulf
GetSaveAsFilename-Methode
Anmerkungen
Diese Methode gibt den ausgewählten Dateinamen oder den vom Benutzer eingegebenen Namen zurück. Der zurückgegebene Name kann eine Pfadangabe enthalten. Gibt False zurück, wenn der Benutzer das Dialogfeld mit Abbrechen verlässt.
Diese Methode kann u.U. das aktuelle Laufwerk oder den aktuellen Ordner ändern.
Ulf
Anzeige
AW: PROBLEME BEIM SPEICHERN UNTER
04.10.2004 13:45:50
christoph
Ist mir bekannt.
Die GetSaveAsFilename-Methode funktioniert ja auch bei mir, aber zum besseren Verständnis eine Erläuterung.

Die GetSaveAsFilename-Methode habe ich meinen Bedürfnissen angepasst. Über einen Button sollen 2 bestimmte Tabellenblätter in einer seperaten Datai, unter einem von Daten aus der Datei abhängigen Namen, abgespeichert werden.
Existiert eine Datei mit diesem Namen bereits in dem gewählten Verzeichnis, wird mit ("Die Datei mit dem Namen ... existiert schon an diesem Platz.soll sie ersetzt werden" "Ja" "Nein" "Abbrechen".) gefragt ob die Datei überschrieben werden soll oder nicht.
Klicke ich auf ja, funktioniert es. Klicke ich auf "Abbrechen" oder "Nein" so kommt die Fehlermeldung: Laufzeitfehler 1004
Die methode "SaveAs" für das Objekt _Workbook ist fehlgeschlagen. Ist ja auch an für sich klar, da ich dies in meiner Routine nicht definiert habe. Jetzt benötige ich den Namen dieser Application um so eine Routine Entwickeln zu können.
Weiß jemand den Namen oder hat einen Alternativen Lösungsvorschlag?
Hier noch mein Code

Sub SPEICHERN()
Dim Datum As Variant
Dim Activ As String
Application.ScreenUpdating = False
Projektname = Worksheets("Bewertung").Range("D4")
Datum = Format(Date, "yymmdd")
Sheets(Array("Bewertung", "Eingegebene Daten")).Select
Sheets(Array("Bewertung", "Eingegebene Daten")).Copy
' SPEICHERN MIT EINEM VORGEGEBENEN DATUM UND NAMEN U
NeuName = Datum & "" & Projektname
DlgAnswer = Application.GetSaveAsFilename(InitialFileName:=NeuName, _
fileFilter:="Microsoft Excel-Arbeitsmappe (*.xls), *.xls")
If DlgAnswer <> "Falsch" Then
ActiveWorkbook.SaveAs Filename:=NeuName, FileFormat:=xlNormal
ActiveWorkbook.Close
Else: ActiveWorkbook.Close SaveChanges:=False
End If
Application.ScreenUpdating = True
End Sub

Dankend für jede Hilfe
christoph
Anzeige
AW: PROBLEME BEIM SPEICHERN UNTER
K.Rola
Hallo,
du kannst das Problem ganz einfach mit einer On Error-Anweisung umschiffen:
Option Explicit
Sub GetSaveAs_Test()
Dim GetName As Variant
GetName = Application.GetSaveAsFilename("GetSaveAs_Test_BAK", "Excel-Arbeitsmappe (*.xls), *.xls")
If GetName <> False Then
On Error GoTo ENDE
ThisWorkbook.SaveAs GetName
End If
Exit Sub
ENDE:
MsgBox "Speichern durch Benutzer abgebrochen!"
End Sub

Gruß K.Rola
Anzeige
AW: PROBLEME BEIM SPEICHERN UNTER
05.10.2004 08:46:37
christoph
Moin zusammen,
erstmal danke für dein Tip.
Ich möchte die Routine ("Die Datei mit dem Namen ... existiert schon an diesem Platz.soll sie ersetzt werden" "Ja" "Nein" "Abbrechen") aber ganz normal durchlaufen können. Klappt ja auch eigentlich, es sei denn ich klicke auf abbrechen oder nein. Dann bekomme ich die oben beschriebenen Fehlermeldung.
Ich könnte natürlich eine eigenen Ruotine entwickeln, aber dazu müsste ich wissen wie ich überprüfen kann ob eine Datei mit diesem Namen Bereits in dem entsprechendem Verzeichnis existiert.
Gruß christoph
Anzeige
AW: PROBLEME BEIM SPEICHERN UNTER
K.Rola
"Ich möchte die Routine ("Die Datei mit dem Namen ... existiert schon an diesem Platz.soll sie ersetzt werden" "Ja" "Nein" "Abbrechen") aber ganz normal durchlaufen können"
Macht mein Code ja. Du brauchst nur die Meldung bei Abbruch/Nein, rauszunehmen:
Option Explicit

Sub GetSaveAs_Test()
Dim GetName As Variant
GetName = Application.GetSaveAsFilename("GetSaveAs_Test_BAK", "Excel-Arbeitsmappe (*.xls), *.xls")
If GetName <> False Then
On Error GoTo ENDE
ThisWorkbook.SaveAs GetName
End If
Exit Sub
ENDE:
End Sub

Gruß K.Rola
Anzeige
Danke, aber ...
05.10.2004 14:50:11
christoph
Danke für deine Hilfe und sorry das meine antwort so lange gedauert hat, bin irgendwie via Mail nicht benachrichtigt worden.
Deine Lösung wäre eine Notlösung. Leiber wäre mir wenn ich die Fehlermeldung nicht umgehe, sondern fände es besser wenn ich den Die Apllication ganz normal benutzen könnte.Also bei ja überschreiben, bei nein zurück in Application.GetSaveAsFilename um den Namen zu ändern und bei Abbrechen wird es halt abbgebrochen.
Danke weiterhin für jeden Tip, jede Hilfe oder Anregung
Christoph
Anzeige
AW: Danke, aber ...
K.Rola
Hallo,
dann viel Spaß mit VBA-Kenntnissen "nein".
Gruß K.Rola
AW: Danke, aber ...
08.10.2004 07:27:22
christoph
hallo K.Rola,
"VBA-Kenntnisse Nein" ist übertrieben. Mittlerwiele bekomme ich auch Sachen ohne Makrorekorder hin (mit Recherche im Archiv). Nur für "VBA-Kenntnisse gut" fehlt noch einiges und leider ist die mögliche Differenzierung bie den VBA- Kenntnissen hier nicht so gut.Habe aber eine Lösung hinbekommen. Ist eigentlich ganz simpel:

Sub SPEICHERN()
'SPEICHERN DER TABELLEN "BEWERTUNG" & "ENGEGEBENE DATEN" IN SEPERATER DATEI
Dim DlgAnswer As Variant
Application.ScreenUpdating = False
Projektname = Worksheets("Bewertung").Range("D4")
Datum1 = Worksheets("Bewertung").Range("B29")
Sheets(Array("Bewertung", "Eingegebene Daten")).Select
Sheets(Array("Bewertung", "Eingegebene Daten")).Copy
' SPEICHERN MIT EINEM VORGEGEBENEN DATUM UND NAMEN
NeuName = Datum & "_" & Projektname
SprungB:
DlgAnswer = Application.GetSaveAsFilename(InitialFileName:=NeuName, _
fileFilter:="Microsoft Excel-Arbeitsmappe (*.xls), *.xls")
'ABFRAGE FALLS DATEI BEREIT IM GEWÄHLTEN VERZEICHNIS VORHANDEN
If DlgAnswer <> False Then
Antwort = Dir(DlgAnswer)
If Antwort <> "" Then
AntwortB = MsgBox("Die Datei mit dem Namen " & Antwort & " existiert bereits. Soll sie ersetzt werden ?", vbYesNoCancel + vbQuestion, "Microsoft Excel")
If AntwortB = vbCancel Then
Application.DisplayAlerts = False
ActiveWorkbook.Close Savechanges:=False
Application.ScreenUpdating = True
Exit Sub
ElseIf AntwortB = vbYes Then
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=NeuName, FileFormat:=xlNormal
ActiveWorkbook.Close
ElseIf AntwortB = vbNo Then
GoTo SprungB:
End If
Else:
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=NeuName, FileFormat:=xlNormal
ActiveWorkbook.Close
End If
Else
Application.DisplayAlerts = False: ActiveWorkbook.Close
End If
Application.ScreenUpdating = True
End Sub

Gruß christoph
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Probleme beim Speichern unter Excel


Schritt-für-Schritt-Anleitung

Um das Problem mit der Fehlermeldung "die Methode SaveAs für das Objekt _Workbook ist fehlgeschlagen" zu beheben, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Öffne den Visual Basic for Applications (VBA) Editor: Drücke ALT + F11 in Excel.

  2. Erstelle ein neues Modul: Rechtsklicke auf "VBAProject (DeineDateiName)" und wähle "Einfügen" > "Modul".

  3. Füge den folgenden Code ein:

    Sub SPEICHERN()
       Dim Datum As Variant
       Dim DlgAnswer As Variant
       Dim Projektname As String
    
       Application.ScreenUpdating = False
       Projektname = Worksheets("Bewertung").Range("D4")
       Datum = Format(Date, "yymmdd")
    
       Sheets(Array("Bewertung", "Eingegebene Daten")).Select
       Sheets(Array("Bewertung", "Eingegebene Daten")).Copy
    
       NeuName = Datum & "_" & Projektname
    
       DlgAnswer = Application.GetSaveAsFilename(InitialFileName:=NeuName, _
       fileFilter:="Microsoft Excel-Arbeitsmappe (*.xls), *.xls")
    
       If DlgAnswer <> False Then
           If Dir(DlgAnswer) <> "" Then
               Antwort = MsgBox("Die Datei mit dem Namen " & Dir(DlgAnswer) & " existiert bereits. Soll sie ersetzt werden?", vbYesNoCancel + vbQuestion, "Microsoft Excel")
               If Antwort = vbYes Then
                   ActiveWorkbook.SaveAs Filename:=DlgAnswer, FileFormat:=xlNormal
               ElseIf Antwort = vbNo Then
                   GoTo SprungB
               Else
                   ActiveWorkbook.Close SaveChanges:=False
                   Exit Sub
               End If
           Else
               ActiveWorkbook.SaveAs Filename:=DlgAnswer, FileFormat:=xlNormal
           End If
       Else
           ActiveWorkbook.Close SaveChanges:=False
       End If
    
       Application.ScreenUpdating = True
    End Sub
  4. Schließe den VBA-Editor und teste das Makro.


Häufige Fehler und Lösungen

Hier sind einige häufige Fehler, die beim Speichern unter Excel auftreten können, sowie deren Lösungen:

  • Fehler: "Die Methode SaveAs für das Objekt _Workbook ist fehlgeschlagen."

    • Lösung: Stelle sicher, dass du den Datei-Pfad korrekt angibst und dass keine Dateikonflikte bestehen. Verwende Application.GetSaveAsFilename, um den Dateinamen zu erhalten und prüfe, ob die Datei bereits existiert.
  • Fehler: Laufzeitfehler 1004.

    • Lösung: Dieser Fehler tritt häufig auf, wenn der Benutzer auf "Abbrechen" klickt. Du kannst ihn abfangen, indem du eine On Error-Anweisung einfügst.

Alternative Methoden

Wenn du Excel Probleme beim Speichern hast, kannst du alternative Methoden ausprobieren:

  1. Verwendung von On Error:

    • Implementiere On Error Resume Next, um den Fehler abzufangen, und zeige eine benutzerdefinierte Nachricht an.
    On Error Resume Next
    ActiveWorkbook.SaveAs Filename:=DlgAnswer
    If Err.Number <> 0 Then
       MsgBox "Speichern abgebrochen oder fehlgeschlagen."
       Err.Clear
    End If
  2. Prüfung auf existierende Dateien:

    • Nutze die Dir-Funktion, um zu prüfen, ob eine Datei mit dem gleichen Namen im Zielverzeichnis existiert, bevor du den Speichervorgang anstößt.

Praktische Beispiele

Hier sind einige praktische Beispiele zur Implementierung der Speichermethode:

  • Beispiel 1: Einfaches Speichern mit Bestätigung

    Sub EinfachesSpeichern()
       Dim DateiName As String
       DateiName = Application.GetSaveAsFilename()
       If DateiName <> "Falsch" Then
           ActiveWorkbook.SaveAs Filename:=DateiName
       End If
    End Sub
  • Beispiel 2: Speichern und Daten prüfen

    Sub SpeichernMitPruefung()
       Dim DateiName As String
       DateiName = Application.GetSaveAsFilename()
       If DateiName <> "Falsch" Then
           If Dir(DateiName) <> "" Then
               MsgBox "Die Datei existiert bereits!"
           Else
               ActiveWorkbook.SaveAs Filename:=DateiName
           End If
       End If
    End Sub

Tipps für Profis

  • Verwende Application.DisplayAlerts: Deaktiviere die Warnmeldungen während des Speichervorgangs, um ein reibungsloses Benutzererlebnis zu gewährleisten:

    Application.DisplayAlerts = False
  • Erstelle benutzerdefinierte Fehlermeldungen: Nutze MsgBox, um benutzerfreundliche Meldungen anzuzeigen, wenn ein Fehler auftritt.


FAQ: Häufige Fragen

1. Was ist die Ursache für die Fehlermeldung "die Methode SaveAs für das Objekt _Workbook ist fehlgeschlagen"? Die häufigste Ursache ist ein Konflikt mit bestehenden Dateinamen oder ein nicht zugänglicher Dateipfad.

2. Wie kann ich sicherstellen, dass ich beim Speichern keine Fehlermeldungen erhalte? Implementiere Fehlerbehandlungsroutinen mit On Error-Anweisungen, um unerwartete Fehler abzufangen und entsprechend zu reagieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige