929 Aufrufe
Gefragt in Tabellenkalkulation von ober_fidibus Einsteiger_in (3 Punkte)
Moin @ all,

ich habe folgendes Problem:

Ich möchte gerne in einer Exceldatei auf einen Knopf drücken, sodass mir eine neue Datei erstellt wird. Diese sollte fortlaufend benannt sein, und auch, wenn ich nicht die letzte Version der Datei gerade geöffnet habe, sollte sie doch die letzte Datei finden und meine neue Datei fortlaufend benennen.
Um es an einem Beispiel zu verdeutlichen:
ich habe in einem verzeichniss 3 Excel Dateien (1.xls;2.xls;3.xls). jetzt soll, wenn ich die datei 2.xls aufmache und auf den Button darin klicke, er eine neue Datei erstellen, die den Namen 3.xls hat.

Der Code funktioniert soweit schon ganz gut, nur kämpfe ich gerade mit der temp Datei, die Excel erstellt, sobald man eine Datei aufmacht. Dann erkennt er nämlich diese als letzte der Liste und ich bekomme nicht mehr die 4.xls erstellt, sondern (da ich ja 2.xls aufhabe) 3.xls ...

Hier der bisherige Code:

path = "c:\...\Dummy"
thema = Application.InputBox("Enter the title")

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objOrdner = objFSO.GetFolder(path)
Set colDateien = objOrdner.Files
For Each objDatei In colDateien

If objFSO.GetExtensionName(objDatei) = "xls" Then
strList = objDatei.Name 'Listet nur noch das letzte Ergebniss
End If

Next objDatei
Set objFSO = Nothing
Set objOrdner = Nothing
Set colDateien = Nothing


Wenn nun die letzte Datei die Temporäre ist, müsste ich sie erkennen an der Tilde am Anfang des Dateinames. Wie dies enau gehen soll, da habe ich leider keine Ahnung.
Hoffe ihr könnt mir da weiter helfen.

Vielen Dank schon einmal im Voraus!

1 Antwort

0 Punkte
Beantwortet von lorf55 Mitglied (699 Punkte)
Hallo,
hier meine Variante:
Function NextFileName()
Dim F, temp
Dim FileLeft
Path = "C:\Dokumente und Einstellungen\xyz\Eigene Dateien"
' thema = Application.InputBox("Enter the title")

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objOrdner = objFSO.GetFolder(Path)
Set colDateien = objOrdner.Files
For Each objDatei In colDateien

If objFSO.GetExtensionName(objDatei) = "xls" Then
FileLeft = Left(objDatei.Name, InStr(objDatei.Name, ".") - 1)
temp = Val(FileLeft)
If temp > 0 Then
F = temp
End If

End If

Next objDatei
Set objFSO = Nothing
Set objOrdner = Nothing
Set colDateien = Nothing

dat = CStr(F + 1) + ".xls"

End Function



Gruß
...