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

Forumthread: Datei speichern, wenn vorhanden nicht überschreibe

Datei speichern, wenn vorhanden nicht überschreibe
17.03.2009 15:24:49
Elias
Hallo Forum,
ich brauche mal wieder ein wenig Hilfe.
Unten findet Ihr den Code eines Buttons, mit dessen Hilfe ich eine Datei unter einem
sich aus der Excel-Datei ergebenden Namen in einem fix vorgegebenen Pfad im Datei-
system anlege.
Nun bestünde theoretisch die Möglichkeit, dass ein User Daten in der angelegten Datei abändert,
schlimmstenfalls löscht und den Button_Datei_anlegen erneut drückt.
Es erscheint ja eigentlich die Sicherheitsabfrage von Excel "Datei vorhanden, überschreiben, ja, nein, abbrechen" aber es gibt DAUS die ich vor einer falschen Antwort bewahren muss, ist nicht bös gemeint, sie
wissens echt nicht besser... :-)
Ergo soll, wenn die Datei schon in diesem Pfad unter diesem Namen existiert (den Teil hab ich nicht) sich eine Messagebox mit der Info öffnen und dann der Datei-Öffnen-Dialog im Pfad (den Teil hab ich).
Ich hab mir die halbe Nacht um die Ohren gehauen, alles was ich finden konnte, war genau das Gegenteil von dem was ich brauche, eine andere Lösung hat irgendwie nur halb funktioniert, da fehlt mir noch das Wissen...
Zu Hülf, Ihr braven Leute... :-)

Private Sub Button_Datei_anlegen_Click()
On Error GoTo error_handler
Dim Pfad      As String
Dim NeuerName As String
Pfad = Sheets("Configsheet").Range("B47")
NeuerName = Sheets("Configsheet").Range("B48")
'Umwandlung der Datumsformel in Wert bei Dateianlage
Range("B2").Copy
Range("B2").PasteSpecial xlPasteValues
Application.CutCopyMode = False
If Dir(Pfad) = "" Then
MkDir (Pfad)
End If
Application.DisplayAlerts = False
If NeuerName schon im Pfad vorhanden then
MsgBox "Die Datei gibt es bereits, ich zeige Ihnen wo, dort können Sie die Datei gleich ö _
ffnen."
Application.Dialogs(xlDialogOpen).Show Pfad
Exit Sub
End If
ActiveWorkbook.SaveAs Pfad & NeuerName
Application.DisplayAlerts = True
Exit Sub
error_handler:
'MsgBox "Da ging was schief."
End Sub


Anzeige

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

Betreff
Datum
Anwender
Anzeige
if dir(pfad & neuername)<>"" then owT
17.03.2009 15:33:25
D.Saster
Ich bin ein Riesenrind... :-)
17.03.2009 15:56:12
Elias
Vielen Dank.
Die Lösung hatte ich nachts schon probiert, hat nicht funktioniert.
ABER: der NeuerName wird in einer Zelle aus einer Verkettung gebildet, da brauchte ich nur in die Verkettung noch .xls reinhängen, nu gehts.
Vielen Dank D.Saster... :-)
Manchmal hilfts, nochmal mit dem Kopf draufgestossen zu werden.
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Datei speichern, wenn vorhanden nicht überschreiben


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Erstelle ein neues Modul: Gehe zu Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Füge den VBA-Code ein: Kopiere den folgenden Code in das Modul:

    Private Sub Button_Datei_anlegen_Click()
       On Error GoTo error_handler
       Dim Pfad      As String
       Dim NeuerName As String
       Pfad = Sheets("Configsheet").Range("B47")
       NeuerName = Sheets("Configsheet").Range("B48") & ".xls" ' Füge .xls hinzu
    
       ' Umwandlung der Datumsformel in Wert bei Dateianlage
       Range("B2").Copy
       Range("B2").PasteSpecial xlPasteValues
       Application.CutCopyMode = False
    
       If Dir(Pfad & NeuerName) <> "" Then
           MsgBox "Die Datei gibt es bereits, ich zeige Ihnen wo, dort können Sie die Datei gleich öffnen."
           Application.Dialogs(xlDialogOpen).Show Pfad
           Exit Sub
       End If
    
       ActiveWorkbook.SaveAs Pfad & NeuerName
       Application.DisplayAlerts = True
       Exit Sub
    error_handler:
       MsgBox "Da ging was schief."
    End Sub
  4. Speichere die Datei: Stelle sicher, dass du die Excel-Datei im Makro-fähigen Format (.xlsm) speicherst.

  5. Füge den Button hinzu: Gehe zurück zu Excel, füge einen Button hinzu und verlinke ihn mit Button_Datei_anlegen_Click.


Häufige Fehler und Lösungen

  • Dateiname nicht korrekt: Stelle sicher, dass der NeuerName die Dateiendung .xls hat. Andernfalls wird die Datei möglicherweise nicht richtig gespeichert.
  • Pfad nicht vorhanden: Überprüfe, ob der Pfad in Configsheet korrekt angegeben ist. Falls nicht, wird die Datei nicht erstellt.
  • Sicherheitsabfrage ignoriert: Der Code verwendet Application.DisplayAlerts = False, um die Eingabeaufforderung zu unterdrücken, wenn die Datei nicht existiert.

Alternative Methoden

Eine alternative Methode zur Vermeidung der Überschreibung ist die Verwendung von Excel-Formeln zur Überprüfung, ob die Datei existiert. Du kannst auch ein einfaches Makro verwenden, das den Benutzer auffordert, einen neuen Namen einzugeben, anstatt eine Fehlermeldung anzuzeigen.

If Dir(Pfad & NeuerName) <> "" Then
    NeuerName = InputBox("Die Datei existiert bereits. Bitte geben Sie einen neuen Namen ein:", "Neuer Dateiname")
End If

Praktische Beispiele

  1. Beispiel mit Datum: Wenn du eine Datei mit einem Datum im Namen speichern möchtest, kannst du den NeuerName so anpassen:

    NeuerName = "Report_" & Format(Date, "YYYYMMDD") & ".xls"
  2. Verkettung in Excel: Du kannst auch eine Zelle verwenden, die den Namen aus verschiedenen Zellen verkettet:

    NeuerName = Sheets("Configsheet").Range("B48").Value & "_" & Format(Date, "YYYYMMDD") & ".xls"

Tipps für Profis

  • Verwende FileDialog: Du kannst den FileDialog verwenden, um dem Benutzer die Möglichkeit zu geben, einen Speicherort auszuwählen, anstatt einen festen Pfad zu verwenden.
  • Ereignisprozeduren: Nutze Ereignisprozeduren, um automatisch zu speichern, wenn bestimmte Bedingungen erfüllt sind.

FAQ: Häufige Fragen

1. Wie kann ich den Speicherort ändern?
Ändere einfach die Zelle, die den Pfad in Configsheet speichert.

2. Was passiert, wenn ich eine Datei mit demselben Namen speichere?
Der Code zeigt eine Messagebox an und öffnet den Datei-Öffnen-Dialog, wenn die Datei bereits existiert, um sicherzustellen, dass keine Daten verloren gehen.

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