Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1068to1072
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
Dateien in Ordner bewegen
17.04.2009 17:14:40
Claudia
Hallo zusammen,
ich stehe vor einer unlösbaren Aufgabe. Bleibt sie ungelöst, bin ich der "A..... der Welt" und muss das händisch machen.
Also ich beschreibe mein Problem.
Es gibt einen Ordner "Kundenverträge" (Pfad ist ja erst einmal egal, den müsste ich ohnehin noch anpassen).
In diesem Ordner gibt es Unterordner wie folgt aufgebaut (Nachname Kunde, Vorname Kunde). In diesem Ordner gibt es aber auch einen Ordner "Alle Kunden". In diesem Ordner wiederrum sind Excel-Tabellen, die gleich benannt sind wie die Unterordner (Nachname Kunde, Vorname Kunde).
Meine Aufgabe ist es, jede Excel-Datei in den dazugehörigen richtigen Kundenordner zu packen.
Beispiel:
Unterordner (Müller, Franz)
Unterordner (Kuckuck, Pertra)
Die Excel-Datei (Müller, Franz) aus dem Ordner "Alle Kunden" soll nun in den Unterordner "Müller, Franz" kopiert (nicht verschoben) werden.
Da sich in den Unterordnern bereits die gleichen Dateien befinden, sollte der Kopiervorgang so laufen, dass die Datei direkt ersetzt wird (keine Frage, willst Du Datei ersetzen oder so).
Warum bin ich schon der Depp? Die Excel-Dateien ändern sich einmal monatlich und ich müsste diesen Kopiervorgang dementsprechend auch einmal monatlich machen. :------(
Ich sage jedem der hilft, schon einmal "1000 dank".
Liebe Grüße
Claudia

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateien in Ordner bewegen
17.04.2009 17:41:57
Rainer
Hi Claudia!
Lach ... programmiere gerade an der gleichen Problemstellung. ;)
Im Prinzip ist der Job einfach:
fso.copyfile quelle, ziel, true
Thema durch und gut. True am Ende sorgt für das automatische überschreiben ohne vorherige Abfrage.
Aber jetzt fängt es an thematisch zu werden:
Du musst erstmal alle Dateien im UnterOrdner "Alle Kunden" abarbeiten. Geht easy mit einer For Each Schleife.
Innerhalb der Schleife wirst Du dann allerdings den Namen der Datei zerlegen müssen (Methoden inStrRev, Left, Right, Mid helfen dabei ungemein) um den Unterordner bestimmen zu können. Okay, sollte Dateiname und Unterordner Name exakt identisch sein das brauchst Du das nicht dann geht es so:
Zielpfad = "C:\Kunden\" & Dateiname (vorher natürlich Dateiname als Variabele deklarieren, die Variabele dann mit dem Namen des Workbooks füttern und per inStrRev den "." rausfiltern und mit Mid dann das Ganze ohne die Endung ".xls" übergeben an die Variabele).
Wie Du siehst ganz easy. ^^
Okay ... denke hast die Problematik erkannt. Das klingt recht einfach aber ist doch schon ein wenig aufwändiger.
Gib mal die exakten Pfade und die exakte Schreibweise der Dateien an ... reicht 1 Beispielsdatei.
Gruß
Rainer
Anzeige
AW: Dateien in Ordner bewegen
17.04.2009 17:53:05
Claudia
Hallo Rainer,
ganz einfach ist sehr untertrieben. Ich habe ja gar keine Ahnung von VBA, ausser dem Makrorekorder, aber der hilft hier ja nix.
Der PFad lautet:
P:\Firma\Kundenverträge
In diesem Ordner befinden sich dann die Unterordner mit den Kunden wie z.B.
P:\Firma\Kundenverträge\Kuckuck, Petra
Da muss die Excel-Datei von Kuckuck aus dem Ordner "Alle Kunden" rein.
"Alle Kunden" haben dann den Pfad: P:\Firma\Kundenverträge\Alle Kunden
Liebe Grüße
Claudia
AW: Dateien in Ordner bewegen
17.04.2009 17:56:40
Rainer
Hi Claudia!
Gib bitte noch den genauen Namen der Datei für die Dame mit dem netten Namen Kuckuck durch. Der ist wichtig damit ich erkennen kann wie man den Dateinamen extrahieren muß um auf den Ordnernamen zu kommen. ;)
Ganz einfach war auch eher ironisch gemeint.
Gruß
Rainer
Anzeige
AW: Dateien in Ordner bewegen
17.04.2009 18:04:59
Claudia
Ja ich weiß, habe das auch so aufgefasst.
Also der Name der Excel-Datei heißt dann "Kuckuck, Petra"
Oder brauchst Du mehr?
AW: Dateien in Ordner bewegen
17.04.2009 18:07:19
Rainer
Ja, bitte die genaue Endung.
Gruß
Rainer
AW: Dateien in Ordner bewegen
17.04.2009 18:09:06
ransi
HAllo Claudia
Versuch mal so:
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
    ByVal DirPath As String) As Long

Const Pfad = "C:\Temp\Kundendaten" 'Anpassen


Public Sub test()
Dim FSO As Object
Dim Datei As Object
Dim Ziel As String
Set FSO = CreateObject("Scripting.Filesystemobject")
For Each Datei In FSO.getfolder(Pfad).Files
    Ziel = Pfad & "\" & Left(Datei.Name, Len(Datei.Name) - 4) & "\"
    MakeSureDirectoryPathExists (Ziel)
    FSO.copyfile Datei, Ziel, True
Next
End Sub

Die Unterordner werden (sofern noch nicht vorhanden) auch unter Kundendaten angelegt.
Teste das Ganze aber erstmal mit Kopien.
Der Code ist sehr leicht anzupassen.
ransi
Anzeige
AW: Dateien in Ordner bewegen
17.04.2009 18:23:17
Rainer
Hi Claudia!
Unter der Annahme das die Endung ".xls" ist müsste es so funktionieren:

Sub DateienVerschieben()
Dim fso As Object
Dim fVerz As Object
Dim fDateien As Object
Dim fDatei As Object
Dim F As Long
Dim GrundPfad As String
Dim UOName As String
Dim Ziel As String
Dim Dateiname As String
GrundPfad = "P:\Firma\Kundenverträge\"
Set fso = CreateObject("Scripting.FileSystemObject")
Set fVerz = fso.GetFolder(GrundPfad & "Alle Kunden")
Set fDateien = fVerz.Files
For Each fDatei In fDateien
F = Len(Mid(fDatei, (InStrRev(fDatei, "\")) + 1)) - 4
Dateiname = Mid(fDatei, (InStrRev(fDatei, "\")) + 1)
UOName = Left(Mid(fDatei, (InStrRev(fDatei, "\")) + 1), F)
Ziel = GrundPfad & UOName & "\" & Dateiname
fso.copyfile fDatei, Ziel
Next fDatei
End Sub


Hoffe es hilft.
Gruß
Rainer

Anzeige
AW: Dateien in Ordner bewegen
17.04.2009 18:33:24
Claudia
Hallo Rainer,
danke schön für das Makro. Ich bekomme den Fehlerhinweis "Pfad nicht gefunden".
Die vermutete Ordne-Endung "xls" ist korrekt.
Auch Dir danke ich für die Mühe.
Liebe Grüße
Claudia
AW: Dateien in Ordner bewegen
17.04.2009 18:35:53
Rainer
Wenn Du die Fehlermeldung bekommst, dann hast Du mir den Pfad falsch genannt.
Prüfe bitte ob der Ordner wirklich
P:\Firma\Kundenverträge\Alle Kunden
heisst.
Gruß
Rainer
AW: Dateien in Ordner bewegen
17.04.2009 18:37:39
Rainer
Und prüfe bitte ob die Endung wirklich .xls ist. Nicht vermuten, nachgucken.
Ist es nämlich .xlsm oder so funzt das Ganze nicht. Dann mußt Du in der Zeile wo am Ende - 4 steht eine - 5 daraus machen. ;)
Gruß
Rainer
Anzeige
AW: Dateien in Ordner bewegen
17.04.2009 18:30:03
Claudia
Hallo Ransi,
also das kopieren funktioniert schon einmal prima. Allerdings müssen die Excel-Dateien in den jeweiligen Unterordner des Kunden. Derzeit werden sie im Unterordner "Alle Kunden" angelegt.
Oder habe ich den Pfad falsch angegeben: Const Pfad = "P:\Firma\Kundenverträge\Alle Kunden" ?
Die Ordnerstruktur sieht so aus:
P:\Firma\Kundenverträge\
P:\Firma\Kundenverträge\Alle Kunden (da befinden sich die zu kopierenden Excel-Dateien)
P:\Firma\Kundenverträge\Kuckuck, Petra
P:\Firma\Kundenverträge\Müller, Franz
Die Excel-Datei "Kuckuck, Petra" au dem Ordner alle Kunden muss dann in Ordner
P:\Firma\Kundenverträge\Kuckuck, Petra kopiert werden. Und die anderen dann entsprechend.#
Vermute mal , dass meine Beschreibung nicht so sauber war.
Danke nochmals!
Liebe Grüße
Claudia
Anzeige
AW: Dateien in Ordner bewegen
17.04.2009 18:50:08
Claudia
Hallo Rainer,
der genannte Pfad ist korrekt. In diesem Ordner befindet sich sowohl der Ordner "Alle Kunden" und auch die entsprechenden Ordner der Kunden. Und die Endung ist korrekt.
AW: Dateien in Ordner bewegen
17.04.2009 19:19:25
ransi
HAllo Claudia
Da musstes du doch nur ganz wenig anpassen:
Option Explicit



Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
    ByVal DirPath As String) As Long

Const Quelle = "C:\Firma\Kundenverträge\Alle Kunden" 'Anpassen


Public Sub test()
Dim FSO As Object
Dim Datei As Object
Dim Ziel As String
Set FSO = CreateObject("Scripting.Filesystemobject")
For Each Datei In FSO.getfolder(Quelle).Files
    Ziel = "C:\Firma\Kundenverträge" & "\" & Left(Datei.Name, Len(Datei.Name) - 4) & "\"
    MakeSureDirectoryPathExists (Ziel)
    FSO.copyfile Datei, Ziel, True
Next
End Sub

ransi
Anzeige
Es klappt...
18.04.2009 05:37:39
Claudia
Hallo Ransi,
konnte gestern leider nicht mehr antworten. Habe es direkt nach dem Aufstehen probiert, wie Du an der Uhrzeit feststellen kannst.
Es klappt super, vielen lieben Dank! Du bist ein Held!
Schönes Wochenenende und liebe Grüße
Claudia

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige