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

VBA: MoveFile - Datei behalten

VBA: MoveFile - Datei behalten
12.12.2018 23:31:47
Alex
Hallo zusammen,
ich bin gerade dabei in VBA ein Skript zu erstellen, mit dessen Hilfe ich meine Festplatte nach bestimmten Dateien durchsuchen kann. Diese sollen mittels MoveFile in einen speziellen Zielordner verschoben werden.
Es kann jedoch passieren, dass eine Datei mehrfach in verschiedenen Ordnern bzw. Unterordner existiert. Ich möchte die Dateien aber nicht schlicht überschreiben, sondern möchte die Gelegenheit haben, diese manuell zu überprüfen.
Ich suche daher eine Möglichkeit, die Dateien - sofern vorhanden - im Quellordner umzubenennen, und zwar mit Hilfe einer fortlaufenden Nummer.
Folgendes funktionierendes Skript habe ich bisher erstellt (sobald aber eine Datei im Zielordner existiert, erscheint der bzw. mittels 'On Error Resume Next' wird die Datei übersprungen.
Über Hilfestellung und Tipps würde ich mich freuen ...
Public FSO As New FileSystemObject
Sub Test1()
Dim Ordner As Folder
Dim Datei As File
Const Startordner = "C:\ZZZ_Startordner"
Const Zielordner = "C:\ZZZ_Zielordner"
Set Ordner = FSO.GetFolder(Startordner)
For Each Ordner In FSO.GetFolder(Startordner).SubFolders
For Each Datei In Ordner.Files
Quellordner = Ordner & "\"
Speicherdatum = FileDateTime(Datei)
Jahr = Mid(Speicherdatum, 7, 4)
Monat = Mid(Speicherdatum, 4, 2)
Tag = Left(Speicherdatum, 2)
Dateityp = FSO.GetExtensionName(Datei)
ZielordnerNeu = Zielordner & "\" & Dateityp & "\" & Jahr & "\" & Monat & "\" & Tag & _
If Dir(Zielordner, vbDirectory) = "" Then
MkDir (Zielordner)
End If
If Dir(Zielordner & "\" & Dateityp & "\", vbDirectory) = "" Then
MkDir (Zielordner & "\" & Dateityp & "\")
End If
If Dir(Zielordner & "\" & Dateityp & "\" & Jahr & "\", vbDirectory) = "" Then
MkDir (Zielordner & "\" & Dateityp & "\" & Jahr & "\")
End If
If Dir(Zielordner & "\" & Dateityp & "\" & Jahr & "\" & "\" & Monat & "\",  _
vbDirectory) = "" Then
MkDir (Zielordner & "\" & Dateityp & "\" & Jahr & "\" & Monat & "\")
End If
If Dir(Zielordner & "\" & Dateityp & "\" & Jahr & "\" & "\" & Monat & "\" & Tag & "\ _
", vbDirectory) = "" Then
MkDir (Zielordner & "\" & Dateityp & "\" & Jahr & "\" & Monat & "\" & "\" & Tag & "\ _
")
End If
'On Error Resume Next
If Dateityp = "docx" Then FSO.MoveFile Quellordner & Datei.Name, ZielordnerNeu &  _
Datei.Name
Next Datei
Next Ordner
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: MoveFile - Datei behalten
13.12.2018 08:25:43
Daniel
du kennst doch die DIR-Funktion (zumindest verwendest du sie in deinem Code)
mit der kannst du doch prüfen, ob eine Datei ein einen Ordner vorhanden ist und wenn ja, mit NAME alterName AS neuerName umbenennen.
Gruß Daniel
AW: VBA: MoveFile - Datei behalten
13.12.2018 14:14:46
Alex
Hallo Daniel,
die Dir-Funktion ist geläufig, ich komme aber nicht weiter, wenn die Funktion zurückmeldet, dass die Datei bereits vorhanden ist.
Mein Ansatz ist Folgender (inkl. entsprechender Schleife):
Dim i AS Integer
i = 1
If Dir(Quellordner & Datei.Name)  "" Then Name Quellordner & Datei.Name AS Quellordner & Datei & i.Name
Das Ganze eingebunden in eine Schleife (falls die Datei mehr als einmal in meinem Dateien-Wust vorhanden ist).
Hier erhalte ich jedoch schon im Vorfeld die Hinweismeldung "ungültiger Bezeichner".
Wenn ich das gelöst bekommen würde, habe ich das nächste Problem:
- wie binde ich dann den Code ein?
If Dateityp = "docx" Then FSO.MoveFile Quellordner & Datei.Name, ZielordnerNeu & Datei.Name
Da müsste ich ja die neue Dateibezeichnung einfügen (Datei & i -> aber nur, wenn vorher eine Umbenennung stattgefunden hat).
Entweder denke ich zu kompliziert oder ich bin hier an meine VBA-Grenzen gestoßen ...
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige