Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Überschreiben von Dateien verhindern

Überschreiben von Dateien verhindern
Dateien
Hallo Zusammen,
ich habe ein Makro mit dem ich Dateien immer in denselben Pfad abspeichere und auch das Datum mit übergebe. Nun hat sich herausgestellt, dass wenn man einen Dateinamen wählt, der bereits vorhanden ist, die Datei ohne Nachfrage überschrieben wird.
Hier der Code:
Private Sub CommandButton1_Click()
Sheets("Tabelle1").Select
Sheets("Tabelle1").Copy
Const s = "F:\__Info_IDM\Neue_Vorschläge"
Application.DisplayAlerts = False
Dim bm
bm = InputBox("Bitte Dateinamen mit Namen ergänzen:", "Speichern unter: F:\__Info_IDM\ _
Neue_Vorschläge", Format(Now, "yyyy-mm-dd") & "-")
ActiveWorkbook.SaveAs s & "\" & bm & ".xlsx"
ActiveWorkbook.Close False
Workbooks("IDM_Formular.xlsm").Close False
Application.DisplayAlerts = True
End Sub

Was muss ich hier noch ergänzen, damit vorhandene Dateien NICHT überschrieben werden?
Danke schon im voraus.
Gruß Gunter
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Überschreiben von Dateien verhindern
29.05.2012 09:16:58
Dateien
Hallo Gunter,
mit Application.DisplayAlerts = False
schaltest Du den Warnhinweis aus. Laß die Zeile doch mal weg und teste ...
Gruß
erwin
AW: Überschreiben von Dateien verhindern
29.05.2012 10:39:31
Dateien
Hallo Erwin,
du hast recht, wenn ich diesen Eintrag wegnehme, werde ich daraf hingewiesen, dass die Datei bereits vorhanden ist und ob ich diese überschreiben möchte. Vorher kommt jedoch noch eine andere Frage:
"Die folgenden Features können in Arbeitsmappenohne Makros nicht gespeichert werden: VB Projekt
Zum Speichern eine r Datei mit diesen Features klicken Sie auf nein. Wählen Sie dann einen Dateityp mit aktivierten Makros in der Liste Dateityp aus. Klicken Sie auf ja, um die Datei ohne Makros zu speichern."
Wegen diese Meldung habe ich damals das Application.DisplayAlerts = False eingefügt, damit die anderen User nicht irritiert werden.
Siehst du eine Möglichkeit die Meldung mit den Makros zu deaktivieren, jedoch die Meldung zum überschreiben einer Datei aktiv ist?
Gunter
Anzeige
AW: Überschreiben von Dateien verhindern
29.05.2012 11:11:29
Dateien
Hallo,
so in der Art?
Private Sub CommandButton1_Click()
Dim bm As String
Sheets("Tabelle1").Copy
Const s = "F:\__Info_IDM\Neue_Vorschläge\"
Application.DisplayAlerts = False
bm = InputBox("Bitte Dateinamen mit Namen ergänzen:", _
"Speichern unter: " & s & Format(Now, "yyyy-mm-dd") & "-")
If bm  "" Then
If Dir(s & bm & ".xlsx")  "" Then
MsgBox "Datei bereits vorhanden"
Else
ActiveWorkbook.SaveAs s & bm & ".xlsx"
End If
End If
ActiveWorkbook.Close False
Workbooks("IDM_Formular.xlsm").Close False
Application.DisplayAlerts = True
End Sub

Gruß
Rudi
Anzeige
AW: Überschreiben von Dateien verhindern
29.05.2012 12:26:58
Dateien
Hallo Rudi,
das Makro funktioniert in 2 Dingen nicht richtig
1. Es kommt zwar eine Messagebox das die Datei vorhanden ist, die ich mit OK bestätigen kann. Die Ursprungsdatei wird dann jedoch überschrieben.
2. Nach dem Hinweis, dass die Datei bereits vorhanden ist, darf die Datei sich nicht automatisch schliessen, sondern muß wieder zur Eingabe eines neuen Dateinamens auffordern.
Dann wäre die Sache rund.
Gruß Gunter
Anzeige
AW: Überschreiben von Dateien verhindern
29.05.2012 12:33:29
Dateien
Hallo,
1.: kann nicht sein.
2.: nicht schön aber wirkungsvoll:
Private Sub CommandButton1_Click()
Dim bm As String
Sheets("Tabelle1").Copy
Const s = "F:\__Info_IDM\Neue_Vorschläge\"
Application.DisplayAlerts = False
NameEingeben:
bm = InputBox("Bitte Dateinamen mit Namen ergänzen:", _
"Speichern unter: " & s & Format(Now, "yyyy-mm-dd") & "-")
If bm  "" Then
If Dir(s & bm & ".xlsx")  "" Then
MsgBox "Datei bereits vorhanden"
Goto NameEingeben
Else
ActiveWorkbook.SaveAs s & bm & ".xlsx"
End If
End If
ActiveWorkbook.Close False
Workbooks("IDM_Formular.xlsm").Close False
Application.DisplayAlerts = True
End Sub

Gruß
Rudi
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Dateien richtig speichern: Überschreiben von Dateien verhindern


Schritt-für-Schritt-Anleitung

Um das Überschreiben von Dateien in Excel VBA zu verhindern, kannst Du den folgenden Code verwenden. Dieser überprüft, ob die Datei bereits existiert, bevor sie gespeichert wird.

  1. Öffne das VBA-Editor-Fenster in Excel (ALT + F11).
  2. Füge ein neues Modul hinzu.
  3. Platziere den folgenden Code in das Modul:
Private Sub CommandButton1_Click()
    Dim bm As String
    Sheets("Tabelle1").Copy
    Const s = "F:\__Info_IDM\Neue_Vorschläge\"

    ' Benutzer zur Eingabe eines Dateinamens auffordern
    NameEingeben:
    bm = InputBox("Bitte Dateinamen mit Namen ergänzen:", _
    "Speichern unter: " & s & Format(Now, "yyyy-mm-dd") & "-")

    ' Überprüfen, ob der Benutzer einen Namen eingegeben hat
    If bm <> "" Then
        ' Prüfen, ob die Datei bereits existiert
        If Dir(s & bm & ".xlsx") <> "" Then
            MsgBox "Datei bereits vorhanden"
            GoTo NameEingeben
        Else
            ' Datei speichern, wenn sie nicht existiert
            ActiveWorkbook.SaveAs s & bm & ".xlsx"
        End If
    End If

    ActiveWorkbook.Close False
    Workbooks("IDM_Formular.xlsm").Close False
End Sub
  1. Teste das Makro, indem Du auf den entsprechenden Button klickst.

Häufige Fehler und Lösungen

Fehler 1: Die Datei wird trotz Warnung überschrieben.

  • Lösung: Stelle sicher, dass die Zeile Application.DisplayAlerts = False aus dem Code entfernt wird, um die Warnhinweise nicht zu deaktivieren.

Fehler 2: Die Ursprungsdatei schließt sich nach der Warnung.

  • Lösung: Verwende die Goto-Anweisung, um den Benutzer erneut zur Eingabe eines Dateinamens aufzufordern, wenn die Datei bereits vorhanden ist.

Alternative Methoden

Eine alternative Methode, um das Überschreiben von Dateien zu verhindern, ist die Verwendung von Excel-Funktionen wie IF und ISERROR, um die Existenz der Datei zu überprüfen, bevor Du das VBA-Makro ausführst. Diese Methode ist jedoch weniger flexibel und kann den Arbeitsablauf verlangsamen.


Praktische Beispiele

Angenommen, Du arbeitest mit einem Workbook, das VB-Projekte enthält, und möchtest sicherstellen, dass diese gespeichert werden, ohne dass die Datei überschrieben wird. Hier ist ein Beispiel, wie das Makro in der Praxis aussehen könnte. Achte darauf, dass vb-projekte müssen in arbeitsmappen mit makros gespeichert werden korrekt gehandhabt wird, indem Du das Makro in einer Arbeitsmappe mit Makros speicherst.

If vbProjektKannNichtGespeichertWerden Then
    MsgBox "Bitte speichere die Datei als Arbeitsmappe mit Makros."
End If

Tipps für Profis

  • Automatisierung: Überlege, das Makro so zu gestalten, dass es automatisch einen Zeitstempel an den Dateinamen anhängt, um die Wahrscheinlichkeit zu verringern, dass Dateien überschrieben werden.
  • Fehlerprotokollierung: Implementiere eine Fehlerprotokollierung innerhalb Deines Makros, um Probleme beim Speichern von Dateien zu dokumentieren.

FAQ: Häufige Fragen

1. Wie kann ich das Überschreiben deaktivieren, ohne die Warnhinweise zu entfernen?
Du kannst die Eingabeaufforderung für den Dateinamen so anpassen, dass der Benutzer bei jedem Versuch, einen bereits bestehenden Namen zu verwenden, zurück zur Eingabe geleitet wird.

2. Was muss ich beachten, wenn ich mit VB-Projekten arbeite?
Achte darauf, dass Deine Arbeitsmappe als Makro-aktivierte Arbeitsmappe gespeichert wird, da sonst das VB-Projekt nicht gespeichert werden kann.

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