Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
436to440
436to440
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

vba dateien suchen, umbenennen und verschieben

vba dateien suchen, umbenennen und verschieben
04.06.2004 09:05:20
franz
Moin ...
Freitag und ein Problem:
Kann man über Makro folgendes steuern:
Suche mir in dem Verzeichnis c:\2004 folgende Dateien:
(Für den Stern (*) können noch verschiedene Buchstaben und Zahlen folgen
oder vorausgehen)).
1.) Bestandsprotokoll_*.xls
2.) BRNR_PTK.txt
3.) *_ERR.txt
4.) *_PTK.txt
5.) *_STA.csv oder *_STA.xls
6.) Prüfstatistik_*.xls
7.) Teilnehmerzaehlung_In_Branchen_*.xls
8.) Teilnehmerzaehlung_In_Buchabschnitten_*.xls
Benenne diese Dateien wie folgt um:
1.) Bestandsprotokoll Name 2004 Test.xls
2.) Branchenumschlüsselung Name 2004 Test.txt
3.) Fehlerprotokoll Name 2004 Test.txt
4.) Entladeprotokoll Name 2004 Test.txt
5.) Eintragsstatistik Name 2004 Test.csv
6.) Prüfstatistik Name 2004 Test.xls
7.) Teilnehmerzaehlung in Branchen Name 2004 Test.xls
8.) Teilnehmerzaehlung in Buchabschnitten Name 2004 Test.xls
Verschiebe diese Dateien nach der Umbenennung
unter selbem Verzeichnis in die entsprechenden
Unterverzeichnisse.
1.) Nach Verzeichnis c:/2004/Bestandsprotokoll
2.) Nach Verzeichnis c:/2004/Entladeprotokolle
3.) Nach Verzeichnis c:/2004/Entladeprotokolle
4.) Nach Verzeichnis c:/2004/Entladeprotokolle
5.) Nach Verzeichnis c:/2004/Entladeprotokolle
6.) Nach Verzeichnis c:/2004/Bestandsprotokoll
7.) Nach Verzeichnis c:/2004/Teilnehmerzählung
8.) Nach Verzeichnis c:/2004/Teilnehmerzählung
Schön wäre es, wenn für den Dateinamenteil "Name" vorab
Eingabeaufforderung für die Eingabe der richtigen
Bezeichnung käme, welche dann automatisch anstatt "Name"
eingefügt würde.
Ist natürlich ein riesiges Unterfangen, aber vielleicht ....

Gruss
franz

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: vba dateien suchen, umbenennen und verschieben
04.06.2004 14:07:53
Oberschlumpf
Hi Franz
Wenn Du als Dateinamen etwas wie dieses vorgibst
Bestandsprotokoll_*.xls
gehe ich davon aus, dass es mehrere Dateien gibt, die mit dem Namen
Bestandsprotokoll_
beginnen, aber dann anstelle des * sich eben ab dieser Stelle unterscheiden.
Wie lautet die Bedingung, dass Du genau diese eine bestimmte Datei mit
Bestandsprotokoll_*.xls
haben willst, und nich eine andere Datei mit ähnlichem Namen?
Diese Frage gilt auch für alle anderen Dateien, denen Du ein * beigefügt hast.
Oder kann es sein, dass es halt wirklich nur EINE Datei mit dem Namensteil
Bestandsprotokoll_*.xls
gibt, Du aber vllt zu faul warst ;-), den vollen Namen zu schreiben, weil der vllt super lang ist?
Bin auf Dein Feedback neugierig.
Ciao
Thorsten
Anzeige
AW: vba dateien suchen, umbenennen und verschieben
04.06.2004 18:38:47
franz
Hallo Thorsten !
Es ist folgendendes: Die Dateien gibt es nur
einmalig.
Aber z.B. meine genannte Datei "Bestandsprotokoll_*.xls" heißt
heute "Bestandsprotokoll_job251 Abruf.xls". Diese ist immer
nur einmal vorhanden in einem bestimmten Verzeichnis vorhanden.
Bei den anderen ist es genauso.
Unterschiede gibt es z.B. nur da, wo ich den Stern (*) schrieb.
Der restliche Dateinamen bleibt immer im Original gleich.

Gruss
Paul
AW: vba dateien suchen, umbenennen und verschieben
04.06.2004 22:46:47
Oberschlumpf
VOR ERSTAUSFÜHRUNG DES MAKROS SICHERHEITSKOPIEN ERSTELLEN!!!!!!!
(auch ich kann Fehler machen ;-) )
Hallo Franz oder Hallo Paul?????
Zum Testen habe ich 8 Dateien erstellt, die die Dateinamen hatten, wie von Dir vorgegeben.
Userbild

Und nach dem Durchlauf des Makros sah es im Verzeichnis C:\2004 dann so aus.
Als "Name" habe ich "FUNKTIONIERT DAS" eingegeben, wie Du es in den Dateinamen erkennen kannst.

Die Datei https://www.herber.de/bbs/user/7121.jpg wurde aus Datenschutzgründen gelöscht

Und hier ist mein Makro-Beispiel:


Sub FileMove()
Dim lastrDateiName(7) As String, lstrDateiName As String, liSchleife As Integer, lstrInputName As String
Dim lstrVerz As String
    
'Laufwerk- und Verz.wechsel ins gewünschte Verzeichnis
ChDrive ("C:\")
ChDir ("C:\2004")
    
'hier wird geprüft, ob die 3 Unterverzeichnisse im Verzeichnis vorhanden sind - wenn nicht, werden sie erstellt
lstrVerz = Dir("Bestandsprotokoll", vbDirectory)
If lstrVerz = "" Then
    MkDir ("Bestandsprotokoll")
End If
    
lstrVerz = Dir("Entladeprotokolle", vbDirectory)
If lstrVerz = "" Then
    MkDir ("Entladeprotokolle")
End If
    
lstrVerz = Dir("Teilnehmerzählung", vbDirectory)
If lstrVerz = "" Then
    MkDir ("Teilnehmerzählung")
End If
'die Namensteile der gesuchten Dateien, die im Dateinamen immer vorkommen, werden einem String-Array übergeben
lastrDateiName(0) = "Bestandsprotokoll_*.xls"
lastrDateiName(1) = "BRNR_PTK.txt"
lastrDateiName(2) = "*_ERR.txt"
lastrDateiName(3) = "*_PTK.txt"
lastrDateiName(4) = "*_STA.csv"
lastrDateiName(5) = "Prüfstatistik_*.xls"
lastrDateiName(6) = "Teilnehmerzaehlung_In_Branchen_*.xls"
lastrDateiName(7) = "Teilnehmerzaehlung_In_Buchabschnitten_*.xls"
    
'hier wird vom User eine Eingabe erwartet, die Bestandteil aller Dateinamen sein wird. Eine Leereingabe ist nicht möglich
Do Until lstrInputName <> ""
    lstrInputName = InputBox("Bitte vergeben Sie den gewünschten Namen, der ein Teil aller Dateinamen sein soll.", "Namensteileingabe")
        If lstrInputName = "" Then
            dummy = MsgBox("Geben Sie bitte etwas ein!", vbCritical)
        End If
Loop
    
'in der liSchleife werden alle alten Dateinamen in die Wunschdateinamen umbenannt und in die entsprechenden Verzeichnisse verschoben
For liSchleife = 0 To 7
    lstrDateiName = Dir(lastrDateiName(liSchleife))
        If liSchleife = 4 And lstrDateiName = "" Then
            lstrDateiName = Dir("*_STA.xls")
        End If
                
    Select Case lastrDateiName(liSchleife)
        Case "Bestandsprotokoll_*.xls"
            Name lstrDateiName As "Bestandsprotokoll\" & Left(lstrDateiName, 17) & " " & lstrInputName & " Test 2004.xls"
        Case "BRNR_PTK.txt"
            Name lstrDateiName As "Entladeprotokolle\" & "Branchenumschlüsselung " & lstrInputName & " Test 2004.txt"
        Case "*_ERR.txt"
            Name lstrDateiName As "Entladeprotokolle\" & "Fehlerprotokoll " & lstrInputName & " Test 2004.txt"
        Case "*_PTK.txt"
            Name lstrDateiName As "Entladeprotokolle\" & "Entladeprotokoll " & lstrInputName & " Test 2004.txt"
        Case "*_STA.csv"
            Name lstrDateiName As "Entladeprotokolle\" & "Eintragsstatistik " & lstrInputName & " Test 2004.txt"
        Case "Prüfstatistik_*.xls"
            Name lstrDateiName As "Bestandsprotokoll\" & Left(lstrDateiName, 13) & " " & lstrInputName & " Test 2004.xls"
        Case "Teilnehmerzaehlung_In_Branchen_*.xls"
            Name lstrDateiName As "Teilnehmerzählung\" & "Teilnehmerzaehlung in Branchen " & lstrInputName & " Test 2004.xls"
        Case "Teilnehmerzaehlung_In_Buchabschnitten_*.xls"
            Name lstrDateiName As "Teilnehmerzählung\" & "Teilnehmerzaehlung in Buchabschnitten " & lstrInputName & " Test 2004.xls"
    End Select
Next
                        
End Sub


     Code eingefügt mit Syntaxhighlighter 2.5

Du musst es nur im VBA-Editor ("Alt-F11) in ein allgemeines Modul einfügen, und kannst es dann in Excel über Extras/Makro/Makros unter dem Makronamen "FileMove" aufrufen.
Konnte ich denn helfen?
Ciao
Thorsten
Anzeige
Nachtrag
05.06.2004 23:32:44
Oberschlumpf
Hi Franz-Paul
Ich habe etwas vergessen.
Füge bitte unterhalb der "Select Case Zeile" diese beiden Zeilen hinzu:

Case "*_STA.xls"
Name lstrDateiName As "Entladeprotokolle\" & "Eintragsstatistik " & lstrInputName & " Test 2004.xls"

Nun sollte alles so funktionieren, wie gewünscht....Feedback wäre nett.
Ciao
Thorsten

364 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige