Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1924to1928
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel Dateinamen ändern mit VBA

Excel Dateinamen ändern mit VBA
27.03.2023 11:32:59
Marcel Sch

Hallo zusammen,

ich möchte gerne per VBA Dateinamen aus einem Ordner einlesen, formatieren
und danach die Dateien umbenennen.

Die Dateien sind immer gleich aufgebaut:
000-111-222-333;xxyyzz

also erst eine Nummernkombination, dann als Trennzeichen ; und dann ein Namen aus Buchstaben.
Die Nummernkobination kann in der länge variieren.

Das auslesen und formatieren habe ich in VBA bereits einigermaßen hin bekommen, siehe folgender Code.

Jetzt fehlt nur noch das umbenennen der original Dateinamen, es soll alles nach dem ; und das ; gelöscht werden,
das nur die Zahlenkombination stehen bleibt.


Sub DateienAuflisten()

Dim lngZeile As Long
Dim objFileSystem As Object
Dim objVerzeichnis As Object
Dim objDateienliste As Object
Dim objDatei As Object

Set objFileSystem = CreateObject("scripting.FileSystemObject")
'' Pfad setzten
Set objVerzeichnis = objFileSystem.GetFolder("C:\XYZ-Ordner")
Set objDateienliste = objVerzeichnis.Files

lngZeile = 6

For Each objDatei In objDateienliste
     If Not objDatei Is Nothing Then
          ActiveSheet.Cells(lngZeile, 26) = objDatei.Name
          lngZeile = lngZeile + 1
     End If
     

Next objDatei


For spalte = 26 To 26
For zeile = 6 To Cells(Rows.Count, spalte).End(xlUp).Row

If Cells(zeile, spalte).Value > "" Then
    Cells(zeile, spalte - 1).FormulaLocal = "=WENNFEHLER(LINKS(Z" & zeile & ";(FINDEN("";"";Z" & zeile & ";1)-1));"""")"
    End If
    
If Cells(zeile, spalte).Value > "" Then
    Cells(zeile, spalte - 2).FormulaLocal = "=WENNFEHLER(RECHTS(Z" & zeile & ";LÄNGE(Z" & zeile & ")-(FINDEN("";"";Z" & zeile & ";1))-LÄNGE("";"")+1);"""")"
    End If
    
    
Next
Next

For spalte = 24 To 24
For zeile = 6 To Cells(Rows.Count, spalte).End(xlUp).Row

If Cells(zeile, spalte).Value > "" Then
    Cells(zeile, spalte - 1).FormulaLocal = "=WENNFEHLER(LINKS(X" & zeile & ";(FINDEN(""."";X" & zeile & ";1)-1));"""")"
    End If

Next
Next

''Formel als Text von W und Y in Reihe C und D kopieren

Range("C6:C200").Value = Range("W6:W200").Value
Range("D6:D200").Value = Range("Y6:Y200").Value


''Spalten W-Z löschen
Range("W6:Z200").Value = ""


End Sub


Der Code kopiert die Dateinamen in Zelle Z, beginnend ab der 6. Zeile, dann werden die Namen auseinander genommen und in W, X und Y hinterlegt,
und dann in C und D kopiert, anschließend w-Z gelöscht...

Hoffe mir kann da jemand auf die Sprünge helfen.

Gruß
Marcel

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel Dateinamen ändern mit VBA
27.03.2023 14:02:09
Rudi Maintaire
Hallo,
Schema:
for zeile=6 to cells(rows.count,26).end(xlup).row
  name objVerzeichnis &"\" &cells(zeile,26) as objVerzeichnis &"\" &cells(zeile,3) &cells(zeile,4)
next zeile
Gruß
Rudi


AW: Excel Dateinamen ändern mit VBA
27.03.2023 15:06:37
Marcel Sch
Hallo Rudi,

damke erstmal,

wenn ich das einfüge bekomme ich immer den Fehler
"Laufzeitfehler '58':
Datei existiert bereits"

bei der Zeile
name objVerzeichnis &"\" &cells(zeile,26) as objVerzeichnis &"\" &cells(zeile,3) &cells(zeile,4)

Gruß
Marcel


Anzeige
AW: Excel Dateinamen ändern mit VBA
27.03.2023 15:20:49
Rudi Maintaire
Hallo,
ich weiß nicht, was in deiner Tabelle bzw. in deinem Ordner steht.

Gruß
Rudi


AW: Excel Dateinamen ändern mit VBA
27.03.2023 15:28:58
Marcel Sch
Hallo Rudi,

habe gerade noch ein wenig rum probiert, das war mein Fehler,
ich hatte eine Datei mit der gleichen Nummer da drin.
Das kommt aber nicht vor, da das Programm, was die Dateien erzeugt,
das ausschließt.
Ansonsten klappt das so, wie es soll!

Einzig wenn man das ganze 2 mal ausführt, gibt es einen Fehler...
Könnte man das noch irgendwie verhindern, das er zb erst einmal prüft, ob in den Dateinamen das ";" noch vorhanden ist,
und wenn ja, das ganze mit einer Meldung abbrechen?

Vielen Dank schon einmal für deine Hilfe!

Gruß,
Marcel


Anzeige
AW: Excel Dateinamen ändern mit VBA
27.03.2023 16:07:04
UweD
Hallo

ungetestet...

    Dim NNeu As String
    '...
    
    
    For zeile = 6 To Cells(Rows.Count, 26).End(xlUp).Row
        NNeu = objVerzeichnis & "\" & Cells(zeile, 3) & Cells(zeile, 4)
        If Dir(NNeu) = "" Then
            Name objVerzeichnis & "\" & Cells(zeile, 26) As NNeu
        Else
            Msbbox NNeu & vbLf & vbLf & "existiert schon"
        End If
    Next zeile

LG UweD


AW: Excel Dateinamen ändern mit VBA
27.03.2023 16:19:22
Rudi Maintaire
Hallo,
einfach nur Dateien mit einem ; im Namen einlesen:
  For Each objDatei In objDateienliste
    If InStr(objDatei, ";") > 0 Then
      ActiveSheet.Cells(lngZeile, 26) = objDatei.Name
      lngZeile = lngZeile + 1
    End If
  Next objDatei
Gruß
Rudi


Anzeige
AW: Excel Dateinamen ändern mit VBA
27.03.2023 16:58:48
Marcel Sch
Super, das passt mit der Abfrage nach dem ;
Habe am Ende nur noch mal die Prüfung eingefügt, wo er die Formel von W und Y als Text kopiert, ob dort in der Spalte W was steht,
da er sonst ja leere Inhalte nach C und D kopieren würde und damit das überschreibt...

Vielen Dank für die Hilfe!

Gruß
Marcel

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige