Registriert seit: 05.08.2014
Version(en): 2013
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.
Registriert seit: 29.09.2015
Version(en): 2030,5
Was beabsichtest du damit ?
Registriert seit: 05.08.2014
Version(en): 2013
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.
Registriert seit: 29.09.2015
Version(en): 2030,5
01.02.2016, 19:15
(Dieser Beitrag wurde zuletzt bearbeitet: 01.02.2016, 19:16 von snb.)
Wäre dann nicht einfacher:
Speichere A0008.xls als B0008.xls, lösche A0008.xls
NB. Das sortiert auch besser.
Registriert seit: 05.08.2014
Version(en): 2013
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.
Registriert seit: 29.09.2015
Version(en): 2030,5
Oder die Datei speichern in Folder "G:\fertig\"
Registriert seit: 16.08.2014
Version(en): 2013
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
Registriert seit: 16.08.2014
Version(en): 2013
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
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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)
Registriert seit: 29.09.2015
Version(en): 2030,5
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