Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1952to1956
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

Namen Kürzen

Namen Kürzen
02.11.2023 18:11:41
Pitt
Hallo,
habe einen Code mit dem ich die Namen der CSV Datein kürzen möchte.

"C:\Users\paub\Downloads\Autoübersicht_Autopapiere_011123_1234.c

Hier sollen hinten die Zahlen weg, die aber immer anders sein können.(011123_1234)
Es soll nur Autoübersicht_Autopapiere.csv stehen bleiben.

Habe es mit (*) versucht, aber geht nicht.
Es handelt sich immer um eine Datei.

Danke

Sub DateinamenKürzen()

Dim DateiPfad As String
Dim Dateiname As String
Dim NeuerDateiname As String
Dim DateiErweiterung As String
Dim NeuerDateipfad As String
Dim PfadTrenner As String

' Setzen Sie den Dateipfad
DateiPfad = "C:\Users\paub\Downloads\Autoübersicht_Autopapiere_011123_1234.csv"

' Ermitteln des Pfadtrenners (abhängig vom Betriebssystem)
If InStr(1, DateiPfad, "\") > 0 Then
PfadTrenner = "\"
ElseIf InStr(1, DateiPfad, "/") > 0 Then
PfadTrenner = "/"
End If

' Extrahieren des Dateinamens und der Erweiterung
Dateiname = Mid(DateiPfad, InStrRev(DateiPfad, PfadTrenner) + 1)
DateiErweiterung = Right(Dateiname, Len(Dateiname) - InStrRev(Dateiname, "."))

' Erzeugen des neuen Dateinamens (ohne die letzten 12 Zeichen)
NeuerDateiname = Left(Dateiname, Len(Dateiname) - 16) ' 12 entspricht den zu entfernenden Zeichen

' Zusammensetzen des neuen Dateipfads
NeuerDateipfad = Left(DateiPfad, Len(DateiPfad) - Len(Dateiname)) & NeuerDateiname & "." & DateiErweiterung

' Aktualisieren des Dateinamens
Name DateiPfad As NeuerDateipfad

MsgBox "Dateiname wurde gekürzt: " & NeuerDateipfad
End Sub



Gruß Pitt

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Namen Kürzen
02.11.2023 18:32:48
daniel
HI

im Prinzip so (bitte Code mit diesem Wissen selber schreiben:

1. Pfad in eine Variable:
DateiPfad = "C:\Users\paub\Downloads\"


2. Dateinamen per DIR ermitteln, hierbei kannst du Joker einsetzen und bekommst den vollständigen Dateinamen zurück (allerdings nur den Dateinamen, keinen Pfad
DateinameAlt = Dir(DateiPfad & "Autoübersicht_Autopapiere_*.csv")


3. den neuen Dateinamen musst du doch nicht wild zusammenbasteln, der ist einfach:
DateiNameNeu = "Autoübersicht_Autopapiere.csv"


4. dann Sicherheitsprüfung, der alte Name muss und der neue Name darf nicht vorhanden sein:

If DateinameAlt > "" And Dir(DateiPfad & DateiNameNeu) = "" Then

Name DateiPfad & DateiNameAlt AS DateiPfad & DateiNameNeu
end if


Gruß Daniel
Anzeige
AW: Namen Kürzen
02.11.2023 18:57:17
Pitt
Hallo Daniel,

Danke für die schnelle Antwort.
Mit dem Wissen ist das nicht wirklich weit her.
Aber es hat natürlich nicht geklappt.

Den Code habe ich zusammen gebastelt.
Nun hast Du mir noch eine Aufgabe verpasst. Ich sitze ja erst den ganzen Tag daran.

Gruß
Pitt
AW: Namen Kürzen
02.11.2023 19:15:49
daniel
aber du hast den Code zusammengebastelt.
also solltest du die notwendigen Fähigkeiten haben.
das entscheidende ist, dass du den Dateinamen nicht fest vorgibst, sondern wie gezeigt über die DIR-Funktion mit dem Joker anstelle der Zahlen ermittelst.
der rest sollte eigentlich dann genauso funktionieren, wie du es schon hast.
ich sehe kein problem, warum du das nicht selber schreiben können solltest, außer deinem unwillen (ak faulheit), denn wenn du den ersten Code geschrieben oder zumindest verstanden hast, sollte das kein problem sein.
Gruß Daniel
Anzeige
AW: Namen Kürzen
02.11.2023 18:54:09
Yal
Hallo Pitt,

im Grund genommen könnte man wie folgt vorgehen:
_ ermitteln, wo der "rechste" Punkt ist, dann eine Stelle nach links (-1)
_ von dieser Stelle weiter nach links (Step -1) weitergehen, bis ein Zeichen im Bereich a-z oder A-Z vorkommt
_ der ermittelte Bereich aus der orignalen Bezeichnung abschneiden (Replace)
_ umbenennen

Sub DateinamenKürzen()

Dim NeuerName As String
Dim Start As Integer
Dim i

' Setzen Sie den Dateipfad
Const DateiPfad = "C:\Users\paub\Downloads\Autoübersicht_Autopapiere_011123_1234.csv"

Start = InStrRev(DateiPfad, ".") - 1
' Trennung je nach Pfadtrenners (abhängig vom Betriebssystem)
For i = Start To 1 Step -1
Select Case Asc(Mid(DateiPfad, i, 1))
Case 65 To 90, 97 To 122 'A-Z und a-z
Exit For
End Select
Next
NeuerName = Replace(DateiPfad, Mid(DateiPfad, i + 1, Start - i), "")

' Aktualisieren des Dateinamens
If MsgBox("Dateiname wird gekürzt: " & NeuerName, vbYesNo) = vbYes Then Name DateiPfad As NeuerName
End Sub


VG
Yal
Anzeige
AW: Namen Kürzen
02.11.2023 19:03:56
Pitt
Danke Yal für die schnelle Antwort.

Es ist so :
DateiPfad = "C:\Users\paub\Downloads\Autoübersicht_Autopapiere_011123_1234.csv"

In diesem Fall wird die Datei gefunden.

Beim nächsten Aufrufen einer *csv Datei steht da z.B.
"C:\Users\paub\Downloads\Autoübersicht_Autopapiere_011223_4444.csv"

Da würde er die Datei nicht finden? Oder sehe ich das falsch.

Gruß
Pitt
AW: Namen Kürzen
02.11.2023 19:27:33
Pitt
Hallo Yal

Bekomme bei Deinem Code eine Fehlermeldung.

Ich copiere den Pfad immer über Eigenschaften, hoffe das ist oK.

Userbild

Gruß
Pitt
Anzeige
AW: Namen Kürzen
02.11.2023 19:32:33
Yal
Hallo Pitt,

mein Code bezieht sich auf dem von Dir gelieferte Beispiel, bei dem Dateiname + Pfad festgeschrieben sind. Solltest Du eine Variable Dateiname suchen, müsstest Du die "DIR"-Methode von Daniel verwenden.

Da Du dich schoin den ganzen Tag damit gequällt hast, gebe ich dir einen Beschleuniger:

Sub DateinamenKürzen()

Dim DateiAlt As String
Const cPfad = "C:\Users\paub\Downloads\"
Const cDatei = "Autoübersicht_Autopapiere"

'Dateinamen per DIR ermitteln, hierbei musst Du einen Joker einsetzen und bekommst den vollständigen Dateinamen zurück (allerdings nur den Dateinamen, keinen Pfad)
DateiAlt = Dir(cPfad & cDatei & "_*.csv")

If DateiAlt > "" And Dir(cPfad & cDatei & ".csv") = "" Then 'Zieldatei wird, falls vorhanden, nicht überschrieben
Name cPfad & DateiAlt As cPfad & cDatei & ".csv"
End If
End Sub


VG
Yal
Anzeige
AW: Namen Kürzen
03.11.2023 10:31:24
Pitt
Moin Yal,

Danke nochmal für Deine Mühe.

Aber, ich habe sie in meiner Datei probiert.

Das gute, ich bekomme keine Fehlermeldung, aber funktionieren tut sie leider auch nicht.

Der Dateiname wird weder im Verzeichnis neu geschrieben noch gekürzt, wie ich es erhofft habe.

Gruß
Pitt



AW: Namen Kürzen
03.11.2023 11:38:15
Yal
Hallo Pitt,

wenn eine Datei mit diesem Namen bereits existiert, wird es nicht überschrieben.

Eine etwa einfachere Alternativ wäre mit den guten alte DOS-Befehle:
_ herstelle in dem Verzeichnis eine Textdatei,
_ füge hinein diese 3 Zeilen:
del Autoübersicht_Autopapiere.csv
ren %1 Autoübersicht_Autopapiere.csv
pause

_ benenne diese Datei in "AutoÜbersicht_umbenennen.bat" (achtung: .bat ist wichitg)

Dann kannst Du damit innerhalb der Datei Explorer jegliche Datei klicken und auf diese Verarbeitungsdatei drag'n drop und die Datei wird umbenannt.
Alternativ: aus dem "ren" im zweite Zeile machst Du eine "copy". So wird das orignal unverändert bleiben.

VG
Yal
Anzeige
AW: Namen Kürzen
03.11.2023 14:01:10
Pitt
Danke Yal das Du Dich nochmal gemeldet hast.

Habe nun was zusammen gebastelt.
Vielen Dank für die schnelle Hilfe

Gruß Pitt

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige