Hi,
ich bin in die Bibliothek gegangen und habe mir Bücher ausgeliehen und die gelesen und dabei viel programmiert. Nie nur lesen, immer viel Praxis! Immer nur kleine Ziele. Du machst IMHO schon komplexere Sachen, sowas konnte ich am Anfang gar nicht. Ich habe damit angefangen, Werte aus (Excel-)Zellen auszulesen, sie zu manipulieren (Zahlenwerte addieren, Textteile aus Zeichenketten extrahieren/ersetzen etc.) und sie wieder zurück in Excel-Zellen geschrieben. Das waren meine Anfänge.
Dann habe ich auf ein paar webseiten mir Tutorials zu Gemüte geführt - zu Themen, die mich gerade beschäftigt haben. Ich finde für jemanden, der bereits seine Nase in ein Anfängerbuch gesteckt hat ist https://online-excel.de sehr gut. Peter schreibt angenehm, die Einheiten sind kurz und man kann sich selbst aussuchen, wie schwer man es sich macht. Und er weiß, wovon er schreibt - das ist bei VBA nicht immer der Fall (ich z.B. weiß nicht wirklich viel). Wichtig ist: kleine Schritte und Erfolgserlebnisse.
So, sorry, muss ins Bett. Im Inet findest du massenhaft Code, der Dateinamen überprüft, ob sie bereits bestehen und dann irgendwelche Zähler hochzählt.
Mein Vorgehen wäre ungefähr so:
1. Dateinamen generieren unter dem gespeichert werden soll
2. prüfen ob Dateiname bereits existiert
3. wenn er schon existiert, dann Zähler dran
4. zurück zu 2.
Moment mal, ich glaube, ich habe da mal vor langer Zeit was geschrieben, ah, gefunden:
Option Explicit
Function NextFileName(ByVal strPathAndFile As String, Optional ByVal Stellen As Integer = 2)
Dim strFormat As String
Dim Path As String, FNam As String, sExt As String
Dim sCount As String, iCount As Integer
Dim Tmp
'Split fullname into path, filename and extension
Tmp = Split(strPathAndFile, "\")
iCount = UBound(Tmp)
FNam = Tmp(iCount)
If InStr(1, FNam, ".", vbTextCompare) > 0 Then 'Has filename an extension
sExt = Mid(FNam, InStrRev(FNam, "."))
FNam = Mid(FNam, 1, InStrRev(FNam, ".") - 1)
End If
ReDim Preserve Tmp(iCount - 1)
Path = Join(Tmp, "\") & "\"
'Format of counter
strFormat = "_" & String(Stellen, "0")
'Find next free Filename
iCount = 0
Do While Dir(Path & FNam & sCount & sExt) <> ""
iCount = iCount + 1
sCount = Format(iCount, strFormat)
Loop
'Return
NextFileName = Path & FNam & sCount & sExt
End Function
Die Funktion benutzt du so:
Dateiname = NextFileName("c:\test\Dateiname wie du ihn gerne hättest.svg")
und die Funktion prüft, ob da noch ein Zähler dran muss und macht das dann - fertig.
Gute Nacht,
Ulrich
|