Verzeichnisse verschieben

Ich suche einen Excel Makro Code der mir Verzeichnisse inklusive Inhalt und Unterverzeichnisse von T:\NM_E&T\NE_NW_Implement\NE_PMO\17_IOE_2012 nach
T:\NM_E&T\NE_NW_Implement\NE_PMO\18_IOE_2011 verschiebt.

Die Unterverzeichnisse haben immer die gleich Struktur.
IOE_11980_Hub Altdorf Segmentation mbsALT001
Die Nummer steht auf einer Excel-Liste in Spate A.

Das Makro soll nach den Verzeichnis dessen Nummer in der Liste steht suchen und es verschieben.
Beginnen mit dem Wert aus A3 dann A4 usw.

Vielen Dank für eure Hilfe

Mit freundlichen Grüssen

Walti

Hallo Walti,

füge in Excel-VBA-Editor eine Referenz zu ‚Windows Scripting Host Object Model‘ hinzu, deklariere eine Variable vom Typ ‚IWshRuntimeLibrary.FileSystemObject‘, (z.B.:smiley:im fso As New IWshRuntimeLibrary.FileSystemObject) und lege damit los.
Alle Datei/Ordner-Manipulationsfunktionen sin in diesem Objekt drin. Was und wie verschoben wird ist dir überlassen.

MfG.
W.W.

Hallo Waldemar

Ich bin ein Neuling in Sachen VBA ect.
Deshalb verstehe ich nich ganz was du meinst

Gruss

Walti

Hallo Walter,
(Referenz in VB Verweis in VBA)
Excel starten,
‚ALT+F11‘ (VBA Editor),
‚Extras‘ / ‚Verweise‘,
‚Windows Scripting Host Object Model‘ in der Liste auswählen und mit ‚OK‘ bestätigen.

Jetzt hast du eine Referenz zu ‚Windows Scripting Host Object Model‘ hinzugefügt und kannst die Klassen dieser Bibliothek nutzen.

MfG.
W.W.

Hallo,
leider kann ich Ihnen hier gar nicht helfen.
LG Sandra Lang

Hallo Waldemar
Ich habe einen Code bekommen, der fast genau das macht was ich möchte.
Public Sub Foldermove()
Dim FsyObjekt As Object
Dim x As Integer
Dim IOEName As String
Set FsyObjekt = CreateObject(„Scripting.FileSystemObject“)

For x = 3 To Sheets(„IOE_Liste“).Cells(Rows.Count, 1).End(xlUp).Row
IOEName = Sheets(„IOE_Liste“).Cells(x, 1)
FsyObjekt.moveFolder „T:\NM_E&T\NE_NW_Implement\NE_PMO\17_IOE_2012\IOE_“ & IOEName & „*“, „T:\NM_E&T\NE_NW_Implement\NE_PMO\18_IOE_2011“
Next x
End Sub

Leider bleibt er mir hängen, wenn er ein Verzeichnis nicht finden.
Weisst du wie ich es hinbekommen, dass er mir, wenn ein Verzeichnis nich vorhanden ist, zur nächsten Zeile springt?

Gruss

Walti

Hallo Walter,
dann musst du prüfen, ob Zielordner existiert und, falls nicht, erstellen.
z.B.:

If Not f.FolderExists(ordnerName) Then
 f.CreateFolder ordnerName
End If

MfG.
W.W.

Hallo Walti,

leider kann ich bei dieser Frage nicht weiterhelfen, da ich im Programm Excel nur ueber einfache Grundkenntnisse verfuege.

Gruss

Chris

Dies würde ich mit Windows Scripting oder einem Batchjob machen.

Hallo Haefliger,

dafür solltest du einen Dateimanager nehmen und nicht Excel.
Excel ist eine Tabellenkalkulation mit der man einiges machen kann. Da ich aber keine Komplettlösungen unterstütze, sondern nur bei „Problemen“ helfe, musst du dich leider weiter bemühen.

mfg
Softoldi

Hallo Herr Haefliger,

leider sind meine VBA-Kenntnisse nicht so umfassend dass ich helfen kann.

Gruß Hugo

Hallo Hugo

Ich habe inzwischen den Code bekommen

Public Sub Foldermove()
Dim FsyObjekt As Object
Dim x As Integer
Dim IOEName As String
Set FsyObjekt = CreateObject(„Scripting.FileSystemObject“)

For x = 3 To Sheets(„IOE_Liste“).Cells(Rows.Count, 1).End(xlUp).Row
IOEName = Sheets(„IOE_Liste“).Cells(x, 1)
FsyObjekt.moveFolder „T:\NM_E&T\NE_NW_Implement\NE_PMO\17_IOE_2012\IOE_“ & IOEName & „*“, „T:\NM_E&T\NE_NW_Implement\NE_PMO\18_IOE_2011“
On Error Resume Next
Next x

End Sub

Den Pfad müssen Sie natürlich anpassen!

Gruss

W. Häfliger

Hallo Softloid

Mit diesem Code klppt es auch mit Excel.

Public Sub Foldermove()
Dim FsyObjekt As Object
Dim x As Integer
Dim IOEName As String
Set FsyObjekt = CreateObject(„Scripting.FileSystemObject“)

For x = 3 To Sheets(„IOE_Liste“).Cells(Rows.Count, 1).End(xlUp).Row
IOEName = Sheets(„IOE_Liste“).Cells(x, 1)
FsyObjekt.moveFolder „T:\NM_E&T\NE_NW_Implement\NE_PMO\17_IOE_2012\IOE_“ & IOEName & „*“, „T:\NM_E&T\NE_NW_Implement\NE_PMO\18_IOE_2011“
On Error Resume Next
Next x

End Sub

Gruss
W. Häfliger

Hallo Walti,

leider kenne ich mich mit Manipulationen von Dateien und Verzeichnissen gar nicht aus.

Vielleicht hilft dir aber diese Seite weiter:
http://www.office-loesung.de/ftopic69558_0_0_asc.php…

Gruß
Natator

Hallo Penka

Geht auch mit disem Code
Public Sub Foldermove()
Dim FsyObjekt As Object
Dim x As Integer
Dim IOEName As String
Set FsyObjekt = CreateObject(„Scripting.FileSystemObject“)

For x = 3 To Sheets(„IOE_Liste“).Cells(Rows.Count, 1).End(xlUp).Row
IOEName = Sheets(„IOE_Liste“).Cells(x, 1)
FsyObjekt.moveFolder „T:\NM_E&T\NE_NW_Implement\NE_PMO\17_IOE_2012\IOE_“ & IOEName & „*“, „T:\NM_E&T\NE_NW_Implement\NE_PMO\18_IOE_2011“
On Error Resume Next
Next x

End Sub

Gruss

Walti

Dies würde ich mit Windows Scripting oder einem Batchjob
machen.

Hallo Waldemar
Habe das Problem gelöst.
Public Sub Foldermove()
Dim FsyObjekt As Object
Dim x As Integer
Dim IOEName As String
Set FsyObjekt = CreateObject(„Scripting.FileSystemObject“)

For x = 3 To Sheets(„IOE_Liste“).Cells(Rows.Count, 1).End(xlUp).Row
IOEName = Sheets(„IOE_Liste“).Cells(x, 1)
FsyObjekt.moveFolder „T:\NM_E&T\NE_NW_Implement\NE_PMO\17_IOE_2012\IOE_“ & IOEName & „*“, „T:\NM_E&T\NE_NW_Implement\NE_PMO\18_IOE_2011“
On Error Resume Next
Next x

End Sub

Gruss
Walti

Hallo Natator
So geht’s

Public Sub Foldermove()
Dim FsyObjekt As Object
Dim x As Integer
Dim IOEName As String
Set FsyObjekt = CreateObject(„Scripting.FileSystemObject“)

For x = 3 To Sheets(„IOE_Liste“).Cells(Rows.Count, 1).End(xlUp).Row
IOEName = Sheets(„IOE_Liste“).Cells(x, 1)
FsyObjekt.moveFolder „T:\NM_E&T\NE_NW_Implement\NE_PMO\17_IOE_2012\IOE_“ & IOEName & „*“, „T:\NM_E&T\NE_NW_Implement\NE_PMO\18_IOE_2011“
On Error Resume Next
Next x

End Sub

Gruss

Walti

Hallo Walti,

vielen Dank für die Rückmeldung und den Code! :smile:

Gruß
Natator

Hallo Walti,
‚On Error Resume Next‘ lässt dein Makro einfach weitermachen ohne auf die Fehler zu reagieren. Somit bekommst du gar nicht mit, dass das Makro irgend etwas nicht gemacht hat, worauf du dich aber verlässt, dass es da ist!

‚OnError Resume Next‘ sollst du nur in einem Extremfall eines WIRKLICH unvorhergesehenen Fehlers verwenden (oder wenn es dir Sch**ß egal ist ob das Ergebniss richtig ist). In allen anderen Fällen solltest du ‚On Error Goto nnn‘ verwenden und die Fehler zumindest Protokollieren.

In deinem Fall MUSST du abel das Vorhandensein deines Zielordners prüfen und ggf. diesen Ordner erstellen. Die Logik dazu musst du dir selbst überlegen (oder googeln).
MfG.
W.W.

hallo walti,

gerade habe ich geschaut, ob es schon antworten gibt, aber sie scheinen mir vielleicht noch nicht befriedigend zu sein. leider habe ich im moment gar keine zeit und bin demnächst verreist. ostern hätte ich zeit. wenn du mir also gründonnerstag schreibst, daß deine anfrage noch nicht gelöst ist, schaue ich es mir nochmal an. aber sehr wahrscheinlich ist bis dahin ja schon alles klar.

viel erfolg!