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

Text-Dateien umbenennen, Multiselect?

Text-Dateien umbenennen, Multiselect?
Thomas
Hallo,
ich habe folgendes Problem. Ich würde gerne alle Text-Dateien in einem Ordner umbenennen (ich weiß nicht ob sich da GetOpenFile mit Multiselect:=True anbietet). Die ursprünglichen Namen der Text-Dateien lauten z. B. "11390226.TXT"
Nun soll der neue Namen aus dem Inhalt derjenigen Text-Datei generiert werden.
Inhalt der Text-Datei:
Date:
Time:
.
.
Name: T
Bezeichnung: 20
.
.
Als Trennzeichen wird Tab verwendet. Der neue Namen soll aus der 6. und 7. Zeile erfolgen so z.B. T_20.TXT
Manche Namen sind doppelt vergeben und statt sie zu überschreiben müsste dann der Name fortlaufend nummeriert werden z.B. T_20_1.TXT, T_20_2.TXT ...
Ist diese ganze Prozedur mit einmal zu erledigen und wenn ja wie muss ich vorgehen?
Vielen Dank im Voraus!
mfg
Thomas
AW: Text-Dateien umbenennen, Multiselect?
29.05.2012 22:46:47
Josef

Hallo Thomas,
teste mal.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub renameTextFiles()
  Dim strPath As String
  Dim strTmp As String, strName As String
  Dim FF As Integer, lngIndex As Long
  Dim objFSO As Object, objFile As Object, objFolder As Object
  
  strPath = "E:\Temp\Test2" 'Verzeichnis - Anpassen!
  
  strPath = IIf(Right(strPath, 1) = "\", strPath, strPath & "\")
  
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  
  Set objFolder = objFSO.GetFolder(strPath)
  
  For Each objFile In objFolder.Files
    If objFile.Name Like "*.txt" Then
      strName = ""
      lngIndex = 0
      FF = FreeFile
      Open objFile.Path For Input As #FF
      Do While Not EOF(FF)
        lngIndex = lngIndex + 1
        Line Input #FF, strTmp
        If lngIndex = 6 Then
          strName = Split(strTmp, vbTab)(1) & "_"
        ElseIf lngIndex = 7 Then
          strName = strName & Split(strTmp, vbTab)(1) & ".txt"
          Exit Do
        End If
      Loop
      Close #FF
      If Len(strName) Then
        strName = nextIndexName(objFile.ParentFolder.Path & "\" & strName)
        Name objFile.Path As strName
      End If
    End If
  Next
  
  Set objFile = Nothing
  Set objFolder = Nothing
  Set objFSO = Nothing
End Sub


Private Function nextIndexName(ByVal FilePath As String, Optional ByVal StartIndex As Long = 1, Optional ByVal Numbers As Long = 1) As String
  Dim strFile As String, strExt As String, strTmp As String, strFormat As String, lngCount As Long
  Dim objFSO As Object
  
  strFormat = String(Numbers, "0")
  lngCount = StartIndex
  
  strFile = Left(FilePath, InStrRev(FilePath, ".") - 1)
  strExt = Mid(FilePath, InStrRev(FilePath, "."))
  
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  
  strTmp = strFile & strExt
  
  Do While (objFSO.FileExists(strTmp))
    strTmp = strFile & "_" & Format(lngCount, strFormat) & strExt
    lngCount = lngCount + 1
  Loop
  
  nextIndexName = strTmp
End Function



« Gruß Sepp »

Anzeige
AW: Text-Dateien umbenennen, Multiselect?
29.05.2012 23:46:48
Thomas
Hallo Sepp,
danke für deine schnelle Antwort und den Code! Ich hab strPath = ThisWorkbook.Path gesetzt. Konnte aber keine Auswirkung feststellen. Keine Fehlermeldung, keine Umbenennung.
Gruß Thomas
AW: Text-Dateien umbenennen, Multiselect?
30.05.2012 17:34:42
Josef

Hallo Thomas,
befinden sich den Überhaupt Textdateien in dem Verzeichnis?
Sind die Textdateien wirklich so aufgebaut wie du es beschrieben hast?
Lade eine der Textdateien hoch.

« Gruß Sepp »

Anzeige
AW: Text-Dateien umbenennen, Multiselect?
30.05.2012 19:58:23
Thomas
Hallo Sepp,
ich hoffe ich hab dir nichts falsches erzählt. Anbei der Link zu einer Textdatei.
https://www.herber.de/bbs/user/80360.txt
Da wo "Hallo Sepp" steht sollen die Dateienbezeichnungen herausgezogen werden.
Vielen Vielen Dank!
Gruß Thomas
P.s. Muss ich noch irgendetwas in der Ausführung des Makros beachten?
AW: Text-Dateien umbenennen, Multiselect?
30.05.2012 20:40:26
Josef

Hallo Thomas,
also mit dem Code von gestern wird bei mir deine 80360.txt in Hallo_Sepp.txt umbenannt.
Stimmt den der Pfad zu den Dateien, liegen sie also im Verzeichnis der Excle-Datei?

« Gruß Sepp »

Anzeige
AW: Text-Dateien umbenennen, Multiselect?
30.05.2012 20:59:58
Thomas
Ach Sepp,
vielleicht liegt es an mir! Die Excel Datei liegt im selben Ordner.
Also ich füge deinen Code in ein Modul ein, gehe in den Text von Sub renameTextFiles() und klick auf Start zum durchlaufen. Nichts passiert. Muss ich die Private Function mit einbinden?
Gruß Thomas
p.s. Ich beschäftige mich erst seit 6 Tagen mit VBA
die Private Function ...
30.05.2012 21:10:34
Rudi
Hallo,
... musst du auch in das gleiche Modul wie die Sub kopieren.
Gruß
Rudi
AW: die Private Function ...
30.05.2012 21:15:25
Thomas
Hallo Rudi,
ich hab den Code so wie er ist, mit Ausnahme strPath = ThisWorkbook.Path in ein Modul kopiert. Klicke in den Text und dann auf den grünen Pfeil. Der Code läuft durch aber nichts passiert.
Gruß
Thomas
(p.s. VBA Version 6)
Anzeige
AW: die Private Function ...
30.05.2012 21:25:02
Thomas
Hmm hab mir gerade noch mal eine neue Text-Datei eingefügt, darin den Text aus der hochgeladenen Beispieldatei und die Datei wird in "Hallo Sepp" umbenannt. Die Anderen Text-Dateien in dem Ordner werden komischerweise nicht verändert.
Vielleicht hängt es damit zusammen dass ich die Text-Datei anonymisiert/verändert habe.
Gruß
Thomas
AW: die Private Function ...
30.05.2012 21:35:30
Josef

Hallo Thomas,
dann lade doch mal eine unveränderte Textdatei hoch.

« Gruß Sepp »

Anzeige
AW: Text-Dateien umbenennen, Multiselect?
30.05.2012 21:36:46
Thomas
Hab jetzt eine neue Text-Datei hochgeladen. Komischerweise wird sie anfangs nicht umbenannt. Nach dem Hochladen, Kopieren in ein neues Textdokument wird sie umbenannt. Wisst Ihr warum?
https://www.herber.de/bbs/user/80361.txt
Gruß Thomas
AW: Text-Dateien umbenennen, Multiselect?
30.05.2012 22:05:29
Josef

Hallo Thomas,
probiers mal so. (Die Funktion aus dem vorherigen Code bleibt gleich!)
Sub renameTextFiles()
  Dim strPath As String
  Dim strTmp As String, strName As String
  Dim FF As Integer, lngIndex As Long
  Dim objFSO As Object, objFile As Object, objFolder As Object
  
  strPath = "E:\Temp\Test2" 'Verzeichnis - Anpassen!
  
  strPath = IIf(Right(strPath, 1) = "\", strPath, strPath & "\")
  
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  
  Set objFolder = objFSO.GetFolder(strPath)
  
  For Each objFile In objFolder.Files
    If objFile.Name Like "*.txt" Then
      strName = ""
      lngIndex = 0
      FF = FreeFile
      Open objFile.Path For Input As #FF
      Do While Not EOF(FF)
        lngIndex = lngIndex + 1
        Line Input #FF, strTmp
        strTmp = Replace(strTmp, vbTab, "")
        If lngIndex = 6 Then
          strName = Trim$(Split(strTmp, ":")(1)) & "_"
        ElseIf lngIndex = 7 Then
          strName = strName & Trim$(Split(strTmp, ":")(1)) & ".txt"
          Exit Do
        End If
      Loop
      Close #FF
      If Len(strName) Then
        strName = nextIndexName(objFile.ParentFolder.Path & "\" & strName)
        Name objFile.Path As strName
      End If
    End If
  Next
  
  Set objFile = Nothing
  Set objFolder = Nothing
  Set objFSO = Nothing
End Sub



« Gruß Sepp »

Anzeige
AW: Text-Dateien umbenennen, Multiselect?
30.05.2012 22:04:39
Thomas
Okay habe noch mal dieselbe Datei mit dem Inhalt "Namen vergeben" auf einen anderen Hoster hochgeladen. Bei mir wird die Datei nicht umbenannt.
www.workupload.com/file/isOlyqo
Gruß Thomas
AW: Text-Dateien umbenennen, Multiselect?
30.05.2012 22:16:06
Thomas
Sorry für den Doppel Post!
Ich habe deinen Code ausgetestet leider ohne Ergebnis. Vielleicht kannst du mal die andere Textdatei testen die ich auf einem anderen Hoster hochgeladen hab.
Gruß Thomas
Danke für deine Hilfe!
AW: Text-Dateien umbenennen, Multiselect?
30.05.2012 22:21:00
Josef

Hallo Thomas,
so läuft's.
Sub renameTextFiles()
  Dim strPath As String
  Dim strTmp As String, strName As String
  Dim FF As Integer, lngIndex As Long
  Dim objFSO As Object, objFile As Object, objFolder As Object
  
  strPath = "E:\Temp\Test2" 'Verzeichnis - Anpassen!
  
  strPath = IIf(Right(strPath, 1) = "\", strPath, strPath & "\")
  
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  
  Set objFolder = objFSO.GetFolder(strPath)
  
  For Each objFile In objFolder.Files
    If LCase(objFile.Name) Like "*.txt" Then
      strName = ""
      lngIndex = 0
      FF = FreeFile
      Open objFile.Path For Input As #FF
      Do While Not EOF(FF)
        lngIndex = lngIndex + 1
        Line Input #FF, strTmp
        strTmp = Replace(strTmp, vbTab, "")
        If lngIndex = 6 Then
          strName = Trim$(Split(strTmp, ":")(1)) & "_"
        ElseIf lngIndex = 7 Then
          strName = strName & Trim$(Split(strTmp, ":")(1)) & ".txt"
          Exit Do
        End If
      Loop
      Close #FF
      If Len(strName) Then
        strName = nextIndexName(objFile.ParentFolder.Path & "\" & strName)
        Name objFile.Path As strName
      End If
    End If
  Next
  
  Set objFile = Nothing
  Set objFolder = Nothing
  Set objFSO = Nothing
End Sub




« Gruß Sepp »

Anzeige
AW: Text-Dateien umbenennen, Multiselect?
30.05.2012 22:59:05
Thomas
Ohh Sepp! Was soll ich sagen, wunderbar es klappt! Ich möchte mich ganz besonders bei dir bedanken und auch bei der Community von herber.de. Ihr seit Spitze!
Gute Nacht!
Gruß Thomas
P.s. ich werde mir morgen nochmal in Ruhe deinen neuen Code anschauen und hoffentlich verstehen wo das Problem versteckt war
AW: Text-Dateien umbenennen, Multiselect?
30.05.2012 22:12:00
Thomas
Okay habe noch mal dieselbe Datei mit dem Inhalt "Namen vergeben" auf einen anderen Hoster hochgeladen. Bei mir wird die Datei nicht umbenannt.
www.workupload.com/file/isOlyqo
Gruß Thomas

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige