Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeichen in Dateinamen ersetzen

Zeichen in Dateinamen ersetzen
Klaus
Guten Morgen zusammen
Worti hatte mir gestern ein Makro geschrieben, um alle Dateien in einem Verzeichnis zu _ bearbeiten:

Sub Alledateien_Bearbeiten()
Dim strDatei As String
Dim wb As Workbook
'Laufwerk und Pfad anpassen
ChDrive "D"
ChDir "D:\data\"
strDatei = Dir("D:\data\*.xls")
Do While strDatei  ""
'Öffnen erste Datei
Set wb = Workbooks.Open(strDatei)
'Deine weiteren Befehle, zB.
MsgBox wb.Name
'Schliessen Datei
wb.Close True
'Schauen, ob es noch weitere XLS-Dateien gibt
strDatei = Dir
Loop
Set wb = Nothing
End Sub

Nun geschieht folgendes: Dateien werden teils gar nicht bearbeitet, andere Dateien (die gar nicht im Laufwerk D vorhanden sind, entstehen auf einmal.
Kann es sein, dass die Dateinamen nicht richtig erkannt werden? Beispiel: JC-BN107-51-2007-JC00556.xls
geht das mit den Minus Zeichen nicht? und wenn, gibt es die Möglichkeit per Makro das Minuszeichen z.B. in einen Unterstrich zu ersetzen?
Gruss Klaus
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zeichen in Dateinamen ersetzen
30.10.2009 11:42:24
Rudi
Hallo,
der Code ist i.O.
ChDrive und ChDir sind allerdings überflüssig.
Gruß
Rudi
AW: Zeichen in Dateinamen ersetzen
30.10.2009 11:47:32
Klaus
Kann das Problem an den Minuszeichen in den Dateinamen liegen?
Gruss Klaus
Nein owT
30.10.2009 11:50:28
Rudi
Anzeige
AW: Nein owT
30.10.2009 11:55:09
Klaus
Woran kann es dann liegen? Es ist wirklich so, dass Dateien entstehen, die vorher gar nicht im Laufwerk "D" waren und andere werden nicht bearbeitet
Gruss Klaus
AW: Nein owT
30.10.2009 12:03:57
Rudi
Hallo,
was weiß ich. Ich kenne deinen weiteren Code nicht.
Gruß
Rudi
AW: Nein owT
30.10.2009 12:18:50
Klaus
Hier der komplette Code:
Sub Alledateien_Bearbeiten()
Dim strDatei As String
Dim wb As Workbook
ChDrive "D"
ChDir "D:\Test"
strDatei = Dir("D:\Test\*.xls")
Do While strDatei  ""
'Öffnen erste Datei
Set wb = Workbooks.Open(strDatei)
Sheets("Ausmass pro Isometrie").Select
Columns("A:c").Select
Selection.Insert Shift:=xlToRight
Columns("A:a").Select
Selection.Insert Shift:=xlToRight
Range("k4").Formula = "EC16C15"
Range("A1").Formula = "Rohrklasse"
Range("B1").Formula = "Projekt"
Range("C1").Formula = "BestellungNr"
Range("d1").Formula = "IsoNr"
Range("e1").Formula = "F14"
Range("f1").Formula = "F15"
Range("g1").Formula = "F16"
Range("h1").Formula = "F17"
Range("i1").Formula = "F18"
Range("j1").Formula = "F19"
Range("k1").Formula = "F20"
Range("l1").Formula = "F21"
ActiveWorkbook.Save
ActiveWorkbook.Close
strDatei = Dir
Loop
Set wb = Nothing
End Sub

Anzeige
AW: Nein owT
30.10.2009 12:48:51
Rudi
Hallo,
versuchs mal so:
Sub Alledateien_Bearbeiten()
Dim strDatei As String
Dim wb As Workbook
Const sPfad As String = "D:\test\"
strDatei = Dir(sPfad & "*.xls")
Do While strDatei  ""
'Öffnen erste Datei
Set wb = Workbooks.Open(sPfad & strDatei)
With wb
With .Sheets("Ausmass pro Isometrie")
.Columns("A:D").Insert Shift:=xlToRight
.Range("k4").Formula = "EC16C15"
.Range("A1").Formula = "Rohrklasse"
.Range("B1").Formula = "Projekt"
.Range("C1").Formula = "BestellungNr"
.Range("d1").Formula = "IsoNr"
.Range("e1").Formula = "F14"
.Range("f1").Formula = "F15"
.Range("g1").Formula = "F16"
.Range("h1").Formula = "F17"
.Range("i1").Formula = "F18"
.Range("j1").Formula = "F19"
.Range("k1").Formula = "F20"
.Range("l1").Formula = "F21"
End With
.Close True
End With
strDatei = Dir
Loop
End Sub

Gruß
Rudi
Anzeige
AW: Nein owT
30.10.2009 13:14:55
Klaus
Hallo
Habe jetzt einmal mit F8 den Code durchlaufen lassen.
Bei einigen Dateien kommt bei
Set wb = Workbooks.Open(strDatei)
der Debugger mit der Meldung "Kann Datei nicht finden"
Die Datei lassen sich aber ganz normal öffnen. Habe auch schon eine Datei umbenannt, mit dem selben Ergebnis.
Gruss Klaus
Anzeige
AW: Nein owT
01.11.2009 20:13:32
Holger
Hi,
prüf mal den Inhalt der Variablen strDatei, der ist leer.
mfg Holger
;
Anzeige
Anzeige

Infobox / Tutorial

Zeichen in Dateinamen ersetzen


Schritt-für-Schritt-Anleitung

Um Zeichen in Dateinamen zu ersetzen, kannst du das folgende Makro verwenden. Dieses Beispiel zeigt, wie du Minuszeichen in Unterstriche umwandeln kannst.

Sub ZeichenErsetzen()
    Dim strDatei As String
    Dim wb As Workbook
    Dim sPfad As String
    Const sNeuerDateiname As String = "_"

    ' Pfad anpassen
    sPfad = "D:\data\"
    strDatei = Dir(sPfad & "*.xls")

    Do While strDatei <> ""
        ' Öffnen der Datei
        Set wb = Workbooks.Open(sPfad & strDatei)

        ' Ändern des Dateinamens
        If InStr(strDatei, "-") > 0 Then
            strDatei = Replace(strDatei, "-", sNeuerDateiname)
            wb.SaveAs sPfad & strDatei
        End If

        ' Schließen der Datei
        wb.Close True
        strDatei = Dir
    Loop

    Set wb = Nothing
End Sub

Führe das Makro aus, um alle Dateien im angegebenen Verzeichnis zu bearbeiten und Minuszeichen durch Unterstriche zu ersetzen.


Häufige Fehler und Lösungen

  1. Datei kann nicht gefunden werden

    • Überprüfe, ob der Pfad korrekt ist. Möglicherweise ist die Datei nicht im angegebenen Verzeichnis oder der Name ist falsch.
  2. Leere Variablen

    • Wenn strDatei leer ist, bedeutet das, dass keine Dateien gefunden wurden. Stelle sicher, dass im Verzeichnis tatsächlich Excel-Dateien vorhanden sind.
  3. Debugging-Probleme

    • Nutze den Debugger, um die Variable strDatei zu überwachen. Wenn sie leer bleibt, überprüfe den Filter (z.B. *.xls).

Alternative Methoden

Falls du keine Makros verwenden möchtest, kannst du auch manuell die Dateinamen ändern. Dies ist jedoch weniger effizient, besonders bei vielen Dateien:

  1. Öffne den Datei-Explorer.
  2. Navigiere zu dem Verzeichnis.
  3. Klicke mit der rechten Maustaste auf die Datei und wähle "Umbenennen".
  4. Ersetze die Minuszeichen durch Unterstriche.

Für eine Batch-Verarbeitung ist das Makro jedoch die bevorzugte Methode.


Praktische Beispiele

Hier sind einige weitere Beispiele, wie du den Code anpassen kannst:

  • Ersetzen mehrerer Zeichen:

    strDatei = Replace(strDatei, "-", "_")
    strDatei = Replace(strDatei, " ", "_")
  • Hinzufügen eines Präfixes:

    strDatei = "Neuer_Prefix_" & strDatei

Diese Anpassungen helfen dir, die Dateinamen individuell zu gestalten.


Tipps für Profis

  • Verwende Konstanten für oft genutzte Werte, wie den Speicherpfad, um deinen Code sauber und wartungsfreundlich zu halten.

  • Führe regelmäßige Backups deiner Dateien durch, bevor du Massenänderungen vornimmst.

  • Teste deinen Code immer zuerst mit einer kleinen Anzahl von Dateien, um ungewollte Änderungen zu vermeiden.


FAQ: Häufige Fragen

1. Kann ich das Makro anpassen, um andere Zeichen zu ersetzen?
Ja, du kannst die Replace-Funktion anpassen, um beliebige Zeichen zu ersetzen.

2. Welche Excel-Version wird benötigt?
Das Makro sollte in Excel 2007 und höher funktionieren. Achte darauf, dass Makros in deinen Einstellungen aktiviert sind.

3. Was tun, wenn ich eine Fehlermeldung erhalte?
Überprüfe deinen Code auf Syntaxfehler oder fehlende Referenzen. Der Debugger kann dir dabei helfen, den Fehler zu finden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige