xsto123
Goto Top

Ordner anhand einer Excel-Liste kopieren

Hallo,

gibt es eine Möglichkeit, Ordner anhand einer Excel-Liste von einem Pfad in den anderen zu kopieren?

Excel-Liste:

Spalte A
1234
5678
9012
...
...


In folgendem Pfad sind Ordner mit u.a. den oben genannten Nummern (jedoch noch mehr Ordner, also nicht nur die aus der Excel-Liste):
F:\Bilder

Kopiert werden sollen die entsprechenden Ordner inkl. Inhalt in den Pfad:
H:\Bilder_Kopie

Danke

Edit: Achja, eine einfache Batch-Datei wäre gut. Powershell kann hier am Rechner leider nicht ausgeführt werden.

Content-Key: 328829

Url: https://administrator.de/contentid/328829

Printed on: April 19, 2024 at 08:04 o'clock

Member: emeriks
emeriks Feb 08, 2017 at 16:03:01 (UTC)
Goto Top
Hi,
Spalte B, Zeile 1 ---> = "xcopy F:\Bilder\" & A1 & " F:\Bilder_Kopie\" & A1 " /S /E"
Formel runterziehen auf alle Zeilen
Spalte B Zellen markieren und kopieren
Notepad --> einfügen --> speichern als CMD
gespeicherte CMD ausführen

E.
Member: xsto123
xsto123 Feb 08, 2017 at 16:09:29 (UTC)
Goto Top
Hi, danke. Ich suche allerdings etwas "längerfristiges". D.h., wenn ich die nächste Excel-Liste mit anderen Nummern bekomme, soll es wieder funktionieren.
Mitglied: 132272
132272 Feb 08, 2017 updated at 16:19:42 (UTC)
Goto Top
Batch ist für den Zugriff auf ein Excel-Sheet etwas schlecht geeignet mit einem VBS kein Problem.
On Error Resume Next
Const QUELLE = "c:\quelle"  
Const ZIEL = "C:\ziel"  
Const LISTE = "C:\liste.xlsx"  
Set objExcel = CreateObject("Excel.Application")  
Set fso = CreateObject("Scripting.FileSystemObject")  
objExcel.DisplayAlerts = False
With objExcel.Workbooks.Open(LISTE).Sheets(1)
	For Each cell In .Range("A1:A" & .Cells.Item(.Rows.Count,"A").End(-4162).Row)  
		folder = QUELLE & "\" & cell.Value  
		If fso.FolderExists(folder) Then fso.CopyFolder folder,ZIEL & "\", True  
                If Err.Number <> 0 Then
			MsgBox "Fehler beim kopieren des Ordners '" & folder & "'" & vbNewLine & Err.Description, vbExclamation  
			Err.Clear
		End If
	Next
End With
objExcel.DisplayAlerts = True
objExcel.Quit
MsgBox "Finished"  
Könntest man auch direkt in die Liste als Makro einbauen wenn man das wollte.

Gruß
Member: xsto123
xsto123 Feb 08, 2017 at 16:23:59 (UTC)
Goto Top
Hey, cool, danke. Das sieht gut aus.

Könntest du mir das eventuell noch als Makro erstellen, wenn es nicht zu viel verlangt ist. Ich bin mir gerade nicht sicher, ob auf dem Firmen-PC ein .vbs-Script ausgeführt werden kann.

Danke noch mal.
Mitglied: 132272
Solution 132272 Feb 08, 2017 updated at 16:38:16 (UTC)
Goto Top
Sonst noch Wünsche, n' Bier oder'n Kaffee?...

Sub Action()
On Error Resume Next
Const QUELLE = "C:\quelle"  
Const ZIEL = "C:\ziel"  
Dim fso as Object, folder as String, cell as Range
Set fso = CreateObject("Scripting.FileSystemObject")  
With Sheets(1)
	For Each cell In .Range("A1:A" & .Cells(.Rows.Count,"A").End(xlUp).Row)  
		folder = QUELLE & "\" & cell.Value  
		If fso.FolderExists(folder) Then fso.CopyFolder folder,ZIEL & "\",True  
		If Err.Number <> 0 Then
			MsgBox "Fehler beim kopieren des Ordners '" & folder & "'" & vbNewLine & Err.Description, vbExclamation  
			Err.Clear
		End If
	Next
End With
Set fso = Nothing
MsgBox "Finished"  
End Sub
Viel Spaß
Member: xsto123
xsto123 Feb 08, 2017 at 16:49:57 (UTC)
Goto Top
Vielen Dank. Werde es morgen im Büro ausprobieren.