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-ID: 328829

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

Ausgedruckt am: 22.11.2024 um 19:11 Uhr

emeriks
emeriks 08.02.2017 um 17:03:01 Uhr
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.
xsto123
xsto123 08.02.2017 um 17:09:29 Uhr
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.
132272
132272 08.02.2017 aktualisiert um 17:19:42 Uhr
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ß
xsto123
xsto123 08.02.2017 um 17:23:59 Uhr
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.
132272
Lösung 132272 08.02.2017 aktualisiert um 17:38:16 Uhr
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ß
xsto123
xsto123 08.02.2017 um 17:49:57 Uhr
Goto Top
Vielen Dank. Werde es morgen im Büro ausprobieren.