Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Nummerierte Dateien in einem Ordner umbenenen
#1
Hallo liebe Leute,

folgendes: Ich habe in einem Ordner C:\Liste  viele durchnummerierte Dateien mit dem Format A0001.xls, A0002.xls, A0003.xls. usw.  Diese Dateien möchte ich nun umbenennen.
Aus A0001.xls (alt) soll  z.B. A0002.xls (neu) werden, dann weiter aus A0002.xls (alt)   A0003.xls (neu) usw. Ich möchte also gezielt nur die einzelnen Nummern ändern. Das Format
0000 und der Anfangsbuchstabe A für alle meine Dateien soll erhalten bleiben.


Wie muss ich meinen Code ergänzen, damit die Sache klappt.


Code:
Sub Alle_Umbenennen()
'Alle Nummern um den Betrag X erhöhen
Set fs = CreateObject("Scripting.FileSystemObject")
Set oFolder = fs.GetFolder("C:\Liste\").Files

For Each File In oFolder
????
Next File

End Sub

Vorweg schon mal Danke für eure Bemühungen.
Antworten Top
#2
Was beabsichtest du damit ?
Antworten Top
#3
Hallo,

ich beabsichtige damit eigentlich Ordnung auf meinem Computer zu schaffen, bzw. zwischen abgearbeiteten und neuen Dateien zu unterscheiden.
Mache ich der aus der 0001 eine 0100 mit dem Ganzen Schwung der Dateien dahinter, weiß ich für mich persönlich, dass ich mit den Dateien
fertig bin. Das gilt natürlich nicht nur für Excel Dateien. Insofern mag die Fragestellung etwas akademisch formuliert erscheinen.
Antworten Top
#4
Wäre dann nicht einfacher:

Speichere A0008.xls als B0008.xls, lösche A0008.xls

NB. Das sortiert auch besser.
Antworten Top
#5
Hallo,

du wirst lachen an so etwas ähnlich hatte ich im Zusammenhang mit der For Each - Schleife auch schon gedacht.
Und zwar so wandel die 0001 in eine 0002 um und mache aus dem A ein B.  Natürlich auch für alle nachfolgenden Dateien und verhindere somit das Überschreiben der Dateien,
weil die For each Schleife ja nur vorwärts zählt. Mit einem weiteren For Each Durchlauf könnte man dann das B wieder in ein A zurückverwandeln. Fand das aber wenig elegant.
Aber wer weiß, vielleicht gehts auch nicht anders.
Antworten Top
#6
Oder die Datei speichern in Folder "G:\fertig\"
Antworten Top
#7
Hallo,

warum nicht die Methode "doof" wählen.  Einfach so tun als ob z.B. 10000 (oder auch mehr)  umzubenennde Dateien im Ordner sind. Mit "On Error Resume Next" werden Fehlermeldungen des Compilers bei nicht vorhandenen Dateien  ignoriert und die Schleife wird weiter abgearbeitet. Vorteil, ausser dem Dateinamen A + Format (n, "0000") + .xls wird nichts eingegeben, geprüft oder sonst irgendwas getan.


Code:
Sub Umbenennen()
On Error Resume Next
Dim vers As Integer 'Verschiebungsfaktor

vers = 1
'og = Obergrenze, hautsache groß!
For og = 10000 To 1 Step -1
Name "C:\Test\A" & Format(og, "0000") & ".xls" As "C:\Test\A" & Format(og + vers, "0000") & ".xls"
Next

End Sub
Antworten Top
#8
O.K. programmiertechnisch vielleicht doch etwas sauberer und dafür die Verschiebung auch in 2 Richtungen vielleicht so:


Code:
Sub Umbenennen()
Dim vbend As String, vstrV1D As String, vers As Integer
vstrV1D = "C:\Test\A"
vbend = ".xls"

vers = 100 'Verschiebungswert plus oder minus

If vers > 0 Then
For vbgre = 100000 To 1 Step -1
If Dir(vstrV1D & Format(vbgre, "0000") & vbend) <> "" Then _
Name vstrV1D & Format(vbgre, "0000") & vbend As vstrV1D & Format(vbgre + vers, "0000") & vbend
Next
Else
For vbgre = 1 To 100000
If Dir(vstrV1D & Format(vbgre, "0000") & vbend) <> "" Then _
Name vstrV1D & Format(vbgre, "0000") & vbend As vstrV1D & Format(vbgre + vers, "0000") & vbend
Next
End If

End Sub
Antworten Top
#9
Hallöchen,

wenn Du das Makro auch für andere Dateitypen flexibel gestalten willst, dann hab ich hier noch einen Ansatz für das Trennen der Dateierweiterung:

Erweiterung = Right(Dateiname, Len(Dateiname) - InStrRev(Dateiname, "."))
NameOhneE = Left(Dateiname, InStrRev(Dateiname, ".") - 1)

allgemeiner Hinweis:
Ist in der Variable für den Dateinamen der Pfad enthalten, trennt man ihn nach dem Muster für die Erweiterung ab.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#10
Ist schon von MS erfunden:


Code:
with  CreateObject("scripting.filesystemobject")
     c00=.GetExtensionName("G:\OF\Beispeile.xls")
     c01=.GetBaseName("G:\OF\Beispeile.xls")
end with


schau mal (und mehr):
http://www.snb-vba.eu/VBA_Bestanden.html#L_3
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste