Hallo,
ich benötige Eure Hilfe bei der Erstellung von Dateinamen. Ich möchte das wenn ein Dateiname bereits existiert eine fortlaufende Nummer dahinter geschrieben wird.
Bsp. Dateiname-1, Dateiname-2 usw.
Ich habe bereits etwas zusammengebastelt, allerdings steigt das System nach der -1 aus und erhöht nicht weiter.
Hier ein Auszug aus dem VBA code:
Nummer = 0
If Dir(filename, vbDirectory) <> "" Then
datei = Dir(filename, vbDirectory)
Do Until datei = ""
Nummer = Nummer + 1
datei = Dir()
Loop
filename = ".... & Nummer & " .pdf".
Wie gesagt funktioniert das Ganze nur bis zur 1 danach wird nicht weiter erhöht.
Könnt Ihr mir helfen?
Danke
Rene
Zitat von: ReneB am Oktober 05, 2021, 12:47:15ich benötige Eure Hilfe bei der Erstellung von Dateinamen. Ich möchte das wenn ein Dateiname bereits existiert eine fortlaufende Nummer dahinter geschrieben wird.
Fällt das Problem mit der
Fett-Markierung auf?
->
datei = Dir(filename,
vbDirectory)
Hallo,
@ReneB:
ganz so einfach ist es nicht, wenn das Ganze richtig funktionieren soll.
Hier ein Beispiel: (Nummernbereich 0-999), Optionale Parameter anpassen.
(
Public Function NewFN(BasisName As String, Optional FNExt As String = ".PDF", Optional Path As String = "C:\Temp\")
Dim FN() As String, _
i As Long, _
strFN As String, _
strFN1 As String, _
lngMaxNr As Long
strFN1 = Dir(Path & BasisName & FNExt)
If strFN1 > "" Then
strFN = Dir(Path & BasisName & " - ???" & FNExt)
If strFN > "" Then
'Lese Dateinamen in Array
i = 0
Do Until strFN = ""
ReDim Preserve FN(i)
FN(i) = strFN
i = i + 1
strFN = Dir()
Loop
' Extrahiere Nummern entspr. vorgegebenem Format
For i = 0 To UBound(FN)
FN(i) = Replace(FN(i), BasisName & " - ", "")
FN(i) = Replace(FN(i), FNExt, "")
Next
'Berechne höchste Nummer
For i = 0 To UBound(FN)
If lngMaxNr < FN(i) Then lngMaxNr = FN(i)
Next
Else
strFN = BasisName & " - 1" & FNExt
End If
strFN = BasisName & " - " & lngMaxNr + 1 & FNExt
Else
strFN = BasisName & FNExt
End If
NewFN = strFN
End Function
Hallo DF6GL,
sieht ziemlich komplex aus. Ich dachte das wäre etwas einfacher bzw. kompakter zu lösen. Kann mir vieleicht trotzdem jemand sagen warum es bis zur -1 funktoniert, aber nicht weiter? D.h. ja so ganz verkehrt kann mein Ansatz nicht sein.
Hallo Phils,
leider fällt das Problem nicht auf. Kannst du noch den Schippe Input draufpacken?
Danke
Rene
Zitat von: ReneB am Oktober 06, 2021, 12:15:39leider fällt das Problem nicht auf. Kannst du noch den Schippe Input draufpacken?
Du willst mit dem Aufruf von
Dir() in der Schleife die Dateien in dem Verzeichnis zählen. Du übergibst aber
vbDirectory als Attributes an die Funktion. Daher bekommst du nicht Dateien sondern nur (Unter-)Verzeichnisse von
Dir geliefert.
Hallo,
super das war es. Habe vbdirectory rausgeschmissen und siehe da er zählt sauber hoch.
Danke sehr.
War mir ein Vergnügen.
Rene