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.
füge in Excel-VBA-Editor eine Referenz zu ‚Windows Scripting Host Object Model‘ hinzu, deklariere eine Variable vom Typ ‚IWshRuntimeLibrary.FileSystemObject‘, (z.B.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.
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.
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?
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.
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
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
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
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
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.
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.