Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
376to380
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
376to380
376to380
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Ordnerinhalte kopieren / Alex K ?

Ordnerinhalte kopieren / Alex K ?
10.02.2004 13:18:41
Jacob
Hallo,
ich habe folgendes Problem: Ich möchte Dateien von einem Laufwerk in ein anderes kopieren. Dabei exsistiert auf beiden Laufwerken die gleiche Ordnerstruktur (es brauchen keine neuen Ordner angelegt werden)und es sollen nur Dateien in entsprechende Ordner kopiert werden. Ein einfaches FileCopy tut es nicht, da es die Ordnerstruktur schon gibt und sie soll nicht überschrieben werden. Was jemand von Euch einen Rat. Danke im Voraus
Jacob

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ordnerinhalte kopieren / Alex K ?
10.02.2004 13:44:01
Alex K.
Hallo Jacob,
hier mal ein Beispiel. Die Pfade musst du entsprechend anpassen.

Public Sub OrdnerKopieren()
Dim files       As String
Dim tarpath     As String
Dim path        As String
tarpath = "d:\eigene dateien\test\"
path = "c:\eigene dateien\test\"
files = Dir(path & "*.*")
Do While files <> ""
FileCopy path & files, tarpath & files
files = Dir()
Loop
End Sub

AW: Ordnerinhalte kopieren an Alex K
10.02.2004 14:12:23
Jacob
Hallo Alex,
schön dass, du vorbei schaust. Es gibt keinen besseren Menschen, von dem ich so viel lernen kann. Danke.
Ich habe die Prozedur ein wenig angepasst an meine Dateien und ich muss leider sagen, es funktioniert nicht. Vielleicht liegt es daran dass, im Quellvrzeichniss nur Ordner sind, in denen sich die Dateien befinden. Auf jeden Fall wird die Schleife sofort verlassen und es wird nichts kopiert.
In der Zelle F18 wird das Laufwerk eingegeben, von dem es kopiert werden soll. Als Ziel habe ich schon eine Routine geschrieben die, die entsprechenden Verzeichnisse ( Abbild von Quelle) erstellt, die aber leer sind. Mein Problem besteht darin, dass ich in die bestehende Struktur nur Dateien rein kopieren möchte. Kannst du damit etwas anfangen ?


Sub Kopieren()
Dim Dateien  As String
Dim Ziel     As String
Dim Quelle   As String
Quelle = Range("F18") & ":\"
Ziel = ActiveWorkbook.path & "\O"
Dateien = Dir(Quelle & "*.*")
Do While Dateien <> ""
FileCopy Quelle & Dateien, Ziel & Dateien
Dateien = Dir()
Loop
End Sub

Anzeige
AW: Ordnerinhalte kopieren an Alex K
10.02.2004 14:22:46
Alex K.
Hallo Jacko,
komme ich nicht ganz mit. Kannst du mal schreiben, von welchen Verzeichnis (vollständige Pfadangabe) in welches Zielverzeichnis du kopieren möchtest.
Also willst du einen Verzeichnisbaum kopieren? oder nur den Inhalt eines Verzeichnisses ohne Unterverzeichnisse?
AW: Ordnerinhalte kopieren an Alex K
10.02.2004 14:40:10
Jacob
Hallo Alex,
ich stelle dir meiner ganze Prozedur zur Verfügung, vielleicht kannst du es dann besser verstehen. Die drei Prozeduren sind drei verschiedenen Schlatflächen zugeordnet. Der Hintergrund : es besteht ein Dateisystem (Datenbank) auf einem Server. Die sollte aber offline zur Verfügung gestellt werden, für Leute die einfach auf die entsprechenden Schaltflächen drücken sollen, um sich eine Kopie auf z.B. ein Laptop zu erstellen.
Viele Grüße
Jacob

Sub Anlegen()
On Error GoTo Fehlermeldung
Err.Clear
zeile = "A"
Suchzelle = 1
Pfad1 = ActiveWorkbook.path
Datei = Pfad1 & "\Verzeichnisbaum.xls"
Pfad2 = ActiveWorkbook.path & "\O"
MkDir (Pfad2)
Workbooks.Open Datei
Sheets("Tabelle1").Select
Do While zeile <> ""
zeile = Range("A" & Suchzelle)
If zeile = "" Then
Exit Do
Else
zeile = Left(zeile, Len(zeile) - 1)
End If
Pfad3 = Pfad2 & zeile
MkDir (Pfad3)
Suchzelle = Suchzelle + 1
Loop
ActiveWorkbook.Close savechanges = False
MsgBox "Verzeichnisse angelegt unter " & Chr(13) & Chr(13) & Pfad2 & Chr(13)
Fehlermeldung:
If Err = 75 Then
MsgBox "Verzeichnis" & Chr(13) & Chr(13) & Pfad2 & Chr(13) & Chr(13) & " besteht bereits" & Chr(13)
End If
End Sub

---------------

Sub Kopieren()
Dim Dateien  As String
Dim Ziel     As String
Dim Quelle   As String
Quelle = Range("F18") & ":\"
Ziel = ActiveWorkbook.path & "\O"
Dateien = Dir(Quelle & "*.*")
Do While Dateien <> ""
FileCopy Quelle & Dateien, Ziel & Dateien
Dateien = Dir()
Loop
End Sub

---------------

Sub Loeschen()
Dim Mldg, Stil, Antwort, Text1
Ziel = ActiveWorkbook.path & "\O"
Meldung = "Alle Daten in " & Ziel & " werden gelöscht !" & Chr(13) & Chr(13) & "Möchten Sie fortfahren ?" & Chr(13)
Stil = vbYesNo + vbCritical + vbDefaultButton2
Titel = "ACHTUNG !"
Antwort = MsgBox(Meldung, Stil, Titel, Hilfe, Ktxt)
If Antwort = vbYes Then
Set Var = CreateObject("Scripting.FileSystemObject")
Var.deleteFolder (Ziel)
End If
End Sub

line zur Verfügung gestellt werden,
Anzeige
AW: Ordnerinhalte kopieren an Alex K
10.02.2004 15:17:38
Alex K.
Hallo Jacob,
habe mal eine Prozedur zum Kopieren mit einer Unterverzeichnisebene gebastelt. Ich hoffe, du kommst damit klar:

Public Sub OrdnerStart()
Dim DirArray        As Variant
Dim Path            As String
Dim i               As Integer
Dim file            As String
'Dies ist der Startpfad des Verzeichnisbaumes
Path = "c:\eigene dateien\test\"
ReDim DirArray(1 To 1)
i = 0
file = Dir(Path, vbDirectory)
If file = "" Then
Exit Sub
End If
Do While file <> ""
If file = "." Then
file = ""
End If
If file <> ".." Then
If GetAttr(Path & file) = vbDirectory Then
i = i + 1
ReDim Preserve DirArray(1 To i)
DirArray(i) = Path & file & "\"
End If
End If
file = Dir()
Loop
For i = 1 To UBound(DirArray)
OrdnerKopieren CStr(DirArray(i))
Next i
End Sub
Public Sub OrdnerKopieren(Path As String)
Dim files       As String
Dim tarpath     As String
'"d:" gegen deine Drive-Angabe aus Zelle ersetzen;
'falls sich Ziel- und Quellpfad unterscheiden, dann hier die entsprechenden
'Anpassungen vornehmen
tarpath = "d:" & Mid(Path, 3)
files = Dir(Path & "*.*")
Do While files <> ""
FileCopy Path & files, tarpath & files
files = Dir()
Loop
End Sub

Anzeige
AW: Ordnerinhalte kopieren an Alex K
10.02.2004 15:53:06
Jacob
Danke Alex aber ich komme damit nicht klar. Vielleicht muß ich mir etwas Anderes überlegen. Danke für deine Bemühungen.
Viele Grüße
Jacob
AW: Ordnerinhalte kopieren an Alex K
10.02.2004 16:00:33
Alex K.
Hallo Jakob,
das Problem ist, dass ich nicht weiss, was in den einzelnen Zellen drinsteht und wo der Workbook.Path liegt. Ich kann dir also nur noch einmal anbieten, mir in Prosa darzulegen, von wo nach wo du mit welchen Unterverzeichnissen kopieren willst. Dann kann ich dir auch helfen.
AW: Ordnerinhalte kopieren an Alex K
10.02.2004 16:27:23
Jacob
Hallo Alex
ich versuche es dir zu erklären.
Es gibt auf dem Server die ganze Struktur, Verzeichnisse und dadrunter Dateien (Laufwerk O). Da es eine ganze menge ist (um die 1000 Dateien), haben wir uns überlegt dass wir zuerst eine Liste produzieren (MS-DOS), die den ganzen Verzeichnissbaum in eine Excel-Datei schreibt. Es funktioniert auch, die Datei heisst Verzeichnisbaum.xls und auf sie wird auch zugegriffen um die Struktur lokal (offline) anzulegen (s.Anlegen).
In den Zellen steht nichts anderes als Pfad-Angaben (z.B \system, \system\neu etc.)
Mit Workbook.Path möchten wir erreichen dass die Start.xls, in der sich die drei Schaltflächen befinden (Anlegen, Dateien, Löschen), keine feste Pfadangaben enthält. Es funktioniert so dass der Anwender sich die Start.xls lokal kopiert, (er verfügt über eine Serververbindung), dann werden die Makros angestossen und somit eine lokal gespeicherte Datei (Datenbank) erstellt, die genauso aussieht und funktioniert wie die auf dem Server.
Ich hoffe du kannst es verstehen und mir noch ein Tipp geben.
Danke
Anzeige
Jetzt habe ich es - hoffentlich :-)
10.02.2004 17:05:05
Alex K.
Hallo Jakob,
so langsam blicke ich durch. Also hier mein nächster Versuch, schon angepasst auf deine Struktur:

Public Sub Kopieren()
Dim zielPfad        As String
Dim quelle          As String
Dim rng             As Range
Dim datei           As String
With Sheets("Tabelle1")
'Gehe davon aus, das in F18 AUS TABELLE1 das Laufwerk steht. Wenn nicht,
'entsprechend ändern
quelle = .Range("F18") & ":"
zielPfad = ActiveWorkbook.Path & "\O"
For Each rng In .Range("A1:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
'Annahme: in Zelle steht "\system\"
'wenn "\system" steht, dann noch - & "\" - hinter rng.Value
datei = Dir(quelle & rng.Value & "*.*")
Do While datei <> ""
'Annahme: in Zelle steht "\system\"
'wenn "\system" steht, dann noch - & "\" - hinter rng.Value
FileCopy quelle & rng.Value & datei, zielPfad & rng.Value & datei
datei = Dir()
Loop
Next rng
End With
End Sub

Anzeige
AW: Jetzt habe ich es - hoffentlich :-)
10.02.2004 19:43:38
Jacob
Hallo Alex
ich danke dir für die Mühe und es funktioniert. D A N K E ! ! ! ! !
Viele Grüße
Jacob
Danke für die Rückmeldung oT
10.02.2004 20:28:09
Alex K.

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige