Excel 2010 Dateiname wie VBA mit Zählnummer

Allan Sche Sar

Lt. Commander
Registriert
Jan. 2004
Beiträge
1.912
Hallo ihr,

ich bin heute an einen Punkt bei einer VBA Programmierung gestoßen, den ich nicht alleine lösen konnte.
Und zwar geht es darum, das eine Datei immer unter dem gleichen Name und gleichen Pfad angelegt wird. Nun fragt mich Excel, ob die vorhandene Datei überschrieben werden soll, wenn ich das zweite mal die Datei mit dem gleichen Name anlege.

Ich möchte aber, dass der Dateiname sich dann ändert und zwar nach folgenden Schema
"Auswertung " & heutiges Datum & (i)​
Das sähe dann also so aus, wenn pro Tag drei Dateien erzeugt werden
"Auswertung 2015-07-08", "Auswertung 2015-07-08 (1)" und "Auswertung 2015-07-08 (2)"

Dazu habe ich bereits folgenden Code ausgearbeitet:
Code:
DateiNameNeu = "Auswertung " & Format(Now, "yyyy-mm-dd") & ".xls"
If Dir("D:\Temp\" & DateiNameNeu) <> "" Then
        DateiNameNeu = "Auswertung " & Format(Now, "yyyy-mm-dd") & "(1).xls"
        Set wkbMappe = Workbooks.Add
        wkbMappe.SaveAs "D:\Temp\" & DateiNameNeu
    Else
        Set wkbMappe = Workbooks.Add
        wkbMappe.SaveAs "D:\Temp\" & DateiNameNeu
    End If

Wie bekomme ich nun aber die Zahl in der Klammer automatisiert? Denn mit einer For Anweisung gehe ich dann 1 bis 99 Fälle durch, die auftreten können oder noch mehr, wenn man noch mehr Daten pro Tag erzeugt.
Könnt ihr mir da einen Tipp geben?
 
Zuletzt bearbeitet:
Hallo

Ich würde zunächst die Dateien zählen und anschliessend einfach den Wert +1 rechnen

Code:
Dim sFolderPath As String, sPath As String, iCount As Integer

sFolderPath = "C:\Documents and Settings\Santosh\Desktop"
sPath = sFolderPath & "\MeineDateienDieGezähltWerden*.xlsm"
Filename = Dir(sPath )

Do While Filename <> ""
   iCount = iCount + 1
   Filename = Dir()
Loop

iCount = iCount + 1

iCount ist dann eine Variable die du anstatt der 1 einsetzen kannst, wie du schon dein Datum reingebaut hast.

Grüssle
 
Ich danke dir für die Erklärung. Mein Code habe ich nun wie folgt angepasst:
Code:
Pfad = "D:\Temp\"
    DateiNameNeu = Dir(Pfad & "Auswertung " & Format(Now, "yyyy-mm-dd") & ".xls")
    Do While DateiNameNeu <> ""
        iCount = iCount + 1
        DateiNameNeu = Dir()
    Loop
    
    If Dir(Pfad & DateiNameNeu) <> "" Then
        DateiNameNeu = "Auswertung" & Format(Now, "yyyy-mm-dd") & "(" & iCount & ").xls"
        Set wkbMappe = Workbooks.Add
        wkbMappe.SaveAs Pfad & DateiNameNeu
    Else
        DateiNameNeu = "Auswertung " & Format(Now, "yyyy-mm-dd") & ".xls"
        Set wkbMappe = Workbooks.Add
        wkbMappe.SaveAs Pfad & DateiNameNeu
        MsgBox Pfad & DateiNameNeu
    End If

Wenn nun keine Datei vorhanden ist, wurde die Datei mit dem Name: "ELPRO Auswertung 2015-07-08.xls" angelegt.
Wenn diese bereits vorhanden ist, wie die "ELPRO Auswertung 2015-07-08 (1)" angelegt.
Aber wenn diese auch bereits schon vorhanden ist, dann zählt iCount nicht auf 2 hoch. Irgendwas stimmt als nicht.

Nach meiner Überlegung müsste ich die Do-While Schleife in eine If einbauen, um zu unterscheiden, ob es die Datei mit dem Name ....xls oder ...(iCount).xls bereits gibt - richtig?
 
Das Skript macht das richtige.
Zeile 2: DateiNameNeu = Dir(Pfad & "Auswertung " & Format(Now, "yyyy-mm-dd") & ".xls")
Hier gibts du einen genauen Dateiname an, den er finden soll, in deinem Fall "ELPRO Auswertung 2015-07-08.xls". Und genau diese Datei findet er auch.
Aber die Datei mit (1) hat ja einen anderen Name, welcher ja nicht mit deiner Suchangabe übereinstimmt.
Daher eine winzige Anpassung. Aus ".xls" mache "*.xls", dann sollte er beide finden.
 
Ich habe nun geschrieben:
Code:
DateiNameNeu = Dir(Pfad & "ELPRO Auswertung " & Format(Now, "yyyy-mm-dd") & "*.xls")
aber das Ergebnis ist das gleiche. iCount wieder nicht weiter hochgezählt.
 
Tippfehler Zeile 9. Dort hast du bei Auswertung kein Leerschlag drin.
 
Ohh man solch winziger Fehler - ich Idiot.
Und siehe da, es funktioniert.

DANKE für deine Hilfe und Erklärungen.
 
Zurück
Oben