Excel VBA um best. Zeichen in Dateinamen zu ändern

Moin zusammen,

kann ich Excel/VBA dazu verwenden in einem Verzeichnis bei allen Dateinamen z.B. _ durch Leerzeichen oder auch anders herum zu ersetzen?

wer kann mir ne HIlfestellung bezgl des MAkros geben?

Danke und Gruß

slam

kann ich Excel/VBA dazu verwenden in einem Verzeichnis bei
allen Dateinamen z.B. _ durch Leerzeichen oder auch anders
herum zu ersetzen?

Hi Slam,

üblicherweise macht man das mit FileSearch.
Schau dazu in die Vba-Hilfe sowie zu Excecute, Searchsubfolders.
Da ist Beispielcode.
Kriegste den hingebastelt, sodaß er dir mittels MsgBox nacheinander alle Dateinamen anzeigt?
Ich muß grade mal weg, wenn du es nicht hinkriegst dann melde dich, dann schau ich später mal.

Wenn du XL2007 hast oder bald haben wirst kannste dir das sparen, da gibt es kein FileSearch mehr.

Also, welche XL-Version hast du?

Gruß
Reinhard

kann ich Excel/VBA dazu verwenden in einem Verzeichnis bei
allen Dateinamen z.B. _ durch Leerzeichen oder auch anders
herum zu ersetzen?

Hi Slam,

üblicherweise macht man das mit FileSearch.
Schau dazu in die Vba-Hilfe sowie zu Excecute,
Searchsubfolders.
Da ist Beispielcode.
Kriegste den hingebastelt, sodaß er dir mittels MsgBox
nacheinander alle Dateinamen anzeigt?
Ich muß grade mal weg, wenn du es nicht hinkriegst dann melde
dich, dann schau ich später mal.

Wenn du XL2007 hast oder bald haben wirst kannste dir das
sparen, da gibt es kein FileSearch mehr.

Also, welche XL-Version hast du?

2003, ich probier es mal.

Gruß

slam

Gruß
Reinhard

Moin Reinhard,

auslesen der Dateinamen bekomme ich hin (denke ich zumindest) womit ich ein Problem habe ist das „wegschreiben“.
Wennich die Dateinamen zum Beispiel in ein Tabellenblatt einlesen würde, danach die Zeichen tausche, dann weiss ich nicht wie ich den neuen Dateinamen der richtigen Datei zuordnen soll.
Im Prinzip muss die Änderung ja direkt nachdem auslesen eines Namnes passieren um die Änderung gleich wieder mit der richtigen Datei wegzuschreiben.

Über ein bisschen Hilfe wäre ich dankbar.

Gruß

slam

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Slam,

Kriegste den hingebastelt, sodaß er dir mittels MsgBox
nacheinander alle Dateinamen anzeigt?

auslesen der Dateinamen bekomme ich hin (denke ich zumindest)
womit ich ein Problem habe ist das „wegschreiben“.

Dann hast du doch schon die Hauptsache, umbenennen geht dann mit „Name“-Anmweisung.

Zum Testen kannst du ja die Prozedur Test aufrufen.

in deinem Code der die dateinamen ausgelesen hat, baust du das in die innere Schleife in etwa so ein:

For i = 1 To …
Call Umbenennen(FondFiles(i))
Nexxt i

Sub test()
Call Umbenennen(„c:\test\test2\xyz_abc.xls“)
End Sub

Sub Umbenennen(Pfaddatei As String)
Dim Datei As String, Pfad As String
Pfad = Left(Pfaddatei, InStrRev(Pfaddatei, „“))
Datei = Replace(Replace(Pfaddatei, Pfad, „“), „_“, " ")
Name Pfaddatei As Pfad & Datei
End Sub

Also, welche XL-Version hast du?

Über ein bisschen Hilfe wäre ich dankbar.

Mir reicht schon die Angabe der Versionsnummer :smile:

Gruß
Reinhard

Hallo Slam,

Kriegste den hingebastelt, sodaß er dir mittels MsgBox
nacheinander alle Dateinamen anzeigt?

auslesen der Dateinamen bekomme ich hin (denke ich zumindest)
womit ich ein Problem habe ist das „wegschreiben“.

Dann hast du doch schon die Hauptsache, umbenennen geht dann
mit „Name“-Anmweisung.

Zum Testen kannst du ja die Prozedur Test aufrufen.

in deinem Code der die dateinamen ausgelesen hat, baust du das
in die innere Schleife in etwa so ein:

For i = 1 To …
Call Umbenennen(FondFiles(i))
Nexxt i

Sub test()
Call Umbenennen(„c:\test\test2\xyz_abc.xls“)
End Sub

Sub Umbenennen(Pfaddatei As String)
Dim Datei As String, Pfad As String
Pfad = Left(Pfaddatei, InStrRev(Pfaddatei, „“))
Datei = Replace(Replace(Pfaddatei, Pfad, „“), „_“, " ")
Name Pfaddatei As Pfad & Datei
End Sub

Hallo Reinhard

funktioniert im Prinzip, nur bei der Zeile
Name Pfaddatei as Pfad & datei hängt sich das ganze immer auf

Syntax sieht folgendermassen aus ( das schreiben in die Zellen diente nur zur Kontrolle, kann nachher wegfallen

Sub Einlesenundumbenennen()
Dim Pfad As String
Dim Datnam As String
Dim Datnamneu As String
Dim i As Integer
Dim d As Worksheet

Set d = Worksheets(„Dateiname“)
Pfad = „C:\Daten\Excel\test“
Datnam = Dir(Pfad)
i = 1
Do While Datnam „“

d.Cells(i, 1) = Datnam
Pfad = Left(Datnam, InStrRev(Datnam, „“))
Datnamneu = Replace(Replace(Datnam, Pfad, „“), „_“, " ")
Name Datnam As Pfad & Datnamneu

d.Cells(i, 2) = Datnamneu
Datnam = Dir
i = i + 1
Loop

End Sub
wie gesagt, er schreibt in die Zweite Spalte ohne Probleme die geänderten Namen, aber wennich die ’ von der name… Zeile wegnehme, dann hängt sich das ganze immer auf

Also, welche XL-Version hast du?

2003

Über ein bisschen Hilfe wäre ich dankbar.

Mir reicht schon die Angabe der Versionsnummer :smile:

Gruß
Reinhard

Gruß

slam

Hallo Slam,

Pfad war leer, da krachte es halt.

Grundsätzlichc hast du mit FileSearch mehr Möglichjeiten als mit Dir.

Nimm mal diesen Code:

Sub Einlesenundumbenennen()
Dim Pfad As String
Dim Datnam As String
Dim Datnamneu As String
Dim i As Integer
Dim d As Worksheet
Set d = Worksheets("Tabelle1")
Pfad = "H:\test\"
Datnam = Dir(Pfad)
i = 1
Do While Datnam ""
 d.Cells(i, 1) = Datnam
 Datnamneu = Replace(Replace(Datnam, Pfad, ""), "\_", " ")
 If Pfad & Datnam Pfad & Datnamneu Then Name Pfad & Datnam As Pfad & Datnamneu
 Datnam = Dir
 i = i + 1
Loop
End Sub

Gruß
Reinhard