Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
948to952
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
948to952
948to952
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Umbenennen von Textfile mit String aus Textfile

Umbenennen von Textfile mit String aus Textfile
07.02.2008 05:10:00
Textfile
Hallo,
ich habe einen Ordner mit hunderten Textfiles. Die Textfiles sind einfach durchnummeriet. Jedes Textfile enthält eine Reihe, die mit dem Wort "DATE" beginnt und der ein Datum folgt, z.B. "DATE 1 Februar 2008". Die Reihe ist nicht immer an der gleichen Stelle, aber sie beginnt immer mit "DATE". Ich möchte nun die einzelnen Textfiles umbenennen und zwar mit dem Datum, das in jedem Textfile enthalten ist. Also sollte z.B. Textfile 1 nicht mehr "1" heißen, sondern "1 Februar 2008".
Kann mir dabei jemand helfen, wie kann ich das in VBA programmieren?
Vielen herzlichen Dank schonmal,
Alexandra

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Umbenennen von Textfile mit String aus Textfile
07.02.2008 07:48:02
Textfile
Hallo Alexandra,
das könnte z.B. so aussehen.
Den Pfad mußt du natürlich anpassen. Außerdem gehe ich davon aus das NUR Textfiles in dem Ordner sind und das die Daten (Datümer, Datums wie auch immer) in den Files jeweils nur einmalig vorkommen.

Public Sub TextDatUmbenennen()
Dim myFileSystemObject, myFiles
Dim strPath As String, strHelp As String, strDate As String, strNewName As String
Dim arrInput() As String
Dim lngPos As Long, lngHelp As Long
' Pfad natürlich anpassen
strPath = "C:\Copy\Test"
Set myFileSystemObject = CreateObject("Scripting.FileSystemObject")
For Each myFiles In myFileSystemObject.GetFolder(strPath).Files
' datei einlesen
Open myFiles For Binary As #1
strHelp = Space(LOF(1))
Get #1, , strHelp
arrInput = Split(strHelp, vbCrLf)
Close #1
' Nun die Zeile mit dem Datum suchen
lngHelp = 0
For lngPos = LBound(arrInput) To UBound(arrInput)
If InStr(arrInput(lngPos), "DATE") > 0 Then
strDate = Trim(Replace(arrInput(lngPos), "DATE", ""))
' Und nun Datei umbennen. Wenn Dateiname bereits vorhanden, dann Namen nicht ändern. _
On Error Resume Next
Name myFiles As strPath & "\" & strDate & ".txt"
On Error GoTo 0
Exit For
End If
Next lngPos
Next myFiles
End Sub


Gruß Heiko
PS: Rückmeldung wäre nett !

Anzeige
AW: Umbenennen von Textfile mit String aus Textfile
07.02.2008 08:10:13
Textfile
Hallo Heiko,
genial! Das klappt super! Hab natürlich nicht dran gedacht, dass mehrere Textfiles das gleiche Datum enthalten können, deshalb wurden nicht alle Dateien umbenannt. Ich hab in den Textfiles auch noch eine Zeile mit Namen (wie bisher mit DATE beschrieben, fängt diese Zeile mit NAME an). Kann man das Makro so erweitern, dass zwei Zeilen eingelesen werden und die Datei in "DATE NAME" umbenannt wird?
Auf jeden Fall schon mal ganz herzlichen Dank, Du hast mir viel Zeit erspart!
Alexandra

AW: Umbenennen von Textfile mit String aus Textfile
07.02.2008 08:13:55
Textfile
Hallo Alexandra,
ja kann man, werde mich aber erst am späten Vormittag darum kümmern können.
Also habe etwas Geduld und schau später noch mal hier rein, dann klappt auch dein zweiter Wunsch.
Gruß Heiko

Anzeige
AW: Umbenennen von Textfile mit String aus Textfile
07.02.2008 10:29:10
Textfile
Hallo Alexandra,
das könnte z.B. so gehen:

Public Sub TextDatUmbenennen2()
Dim bolDate As Boolean, bolName As Boolean
Dim myFileSystemObject, myFiles
Dim strPath As String, strHelp As String, strDate As String, strNewName As String
Dim strName As String
Dim arrInput() As String
Dim lngPos As Long, lngHelp As Long
' Pfad natürlich anpassen
strPath = "C:\Copy\Test"
Set myFileSystemObject = CreateObject("Scripting.FileSystemObject")
For Each myFiles In myFileSystemObject.GetFolder(strPath).Files
' Nur Textfiles
If myFiles.Name Like "*.txt" Then
' datei einlesen
Open myFiles For Binary As #1
strHelp = Space(LOF(1))
Get #1, , strHelp
arrInput = Split(strHelp, vbCrLf)
Close #1
' Nun die Zeile mit dem Datum und Namen suchen
lngHelp = 0
bolDate = False
bolName = False
For lngPos = LBound(arrInput) To UBound(arrInput)
If InStr(arrInput(lngPos), "DATE") > 0 Then
strDate = Trim(Replace(arrInput(lngPos), "DATE", ""))
bolDate = True
End If
If InStr(arrInput(lngPos), "NAME") > 0 Then
strName = Trim(Replace(arrInput(lngPos), "NAME", ""))
bolName = True
End If
If bolName And bolDate Then
' Nun Datei umbennen. Wenn Dateiname bereits vorhanden, Namen nicht ändern.
On Error Resume Next
Name myFiles As strPath & "\" & strDate & "_" & strName & ".txt"
On Error GoTo 0
Exit For
End If
Next lngPos
End If
Next myFiles
End Sub


Gruß Heiko
PS: Rückmeldung wäre nett !

Anzeige
Kleine Korrektur !!!
07.02.2008 10:49:00
Heiko
Hallo,
kleine Korrektur !!!
Bitte diese Version verwenden.

Public Sub TextDatUmbenennen2()
Dim bolDate As Boolean, bolName As Boolean
Dim myFileSystemObject, myFiles
Dim strPath As String, strHelp As String, strDate As String, strNewName As String
Dim strName As String
Dim arrInput() As String
Dim lngPos As Long, lngHelp As Long
' Pfad natürlich anpassen
strPath = "C:\Copy\Test"
Set myFileSystemObject = CreateObject("Scripting.FileSystemObject")
For Each myFiles In myFileSystemObject.GetFolder(strPath).Files
' Nur Textfiles
If myFiles.Name Like "*.txt" Then
' datei einlesen
Open myFiles For Binary As #1
strHelp = Space(LOF(1))
Get #1, , strHelp
arrInput = Split(strHelp, vbCrLf)
Close #1
' Nun die Zeile mit dem Datum und Namen suchen
lngHelp = 0
bolDate = False
bolName = False
For lngPos = LBound(arrInput) To UBound(arrInput)
If InStr(arrInput(lngPos), "DATE") > 0 Then
strDate = Trim(Replace(arrInput(lngPos), "DATE", ""))
bolDate = True
End If
If InStr(arrInput(lngPos), "NAME") > 0 Then
strName = Trim(Replace(arrInput(lngPos), "NAME", ""))
bolName = True
End If
If bolName And bolDate Then
' Nun Datei umbennen. Wenn Dateiname bereits vorhanden Namen nicht ändern.
On Error Resume Next
Name myFiles As strPath & "\" & strDate & "_" & strName & ".txt"
On Error GoTo 0
Exit For
End If
Next lngPos
Erase arrInput
End If
Next myFiles
End Sub


Gruß Heiko
PS: Rückmeldung wäre nett !

Anzeige
AW: Kleine Korrektur !!!
07.02.2008 16:27:16
Alexandra
Hallo Heiko,
es läuft perfekt durch und ist genau so wie ich es brauche. Ganz ganz lieben Dank Du hast mir damit unheimlich geholfen!!
Viele Grüße
Alexandra

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige