Microsoft Excel

Herbers Excel/VBA-Archiv

Ordner mit Unterordnern/Dateien kopieren

Betrifft: Ordner mit Unterordnern/Dateien kopieren von: Peter S
Geschrieben am: 06.08.2008 22:40:53

Hallo Ihr lieben,
hab jetzt intensiv die Recherche gequält oder war es umgekehrt?

Es is relstiv einfach zu beschreiben was ich möchte:

Auf einem Stick habe ich einen Ordner mit Unterordnern/Dateien die ich aus der Excel heraus in einen neu zu bildenden Ordner C:\Test kopieren möchte.

Wie macht man sowas in Office 2007, dass es auch in älteren Versionen funktioniert???

Danke für Euere Impulse
Peter S

  

Betrifft: AW: Ordner mit Unterordnern/Dateien kopieren von: Ramses
Geschrieben am: 06.08.2008 23:00:59

Hallo

Da sollte schon was dabei sein

http://www.google.ch/search?hl=de&q=folder+copy+excel+vba&btnG=Google-Suche&meta=

Aber es reicht auch ein Blick in VBA-Online Hilfe


*******************
CopyFolder-Methode


Beschreibung

Kopiert einen Ordner von einem Ort an einen anderen.

Syntax

Objekt.CopyFolder Quelle, Ziel[, überschreiben]

Die Syntax der CopyFolder-Methode besteht aus folgenden Teilen:

Teil Beschreibung
Objekt Erforderlich. Immer der Name eines FileSystemObject.
Quelle Erforderlich. Zeichenfolge für die Ordnerspezifikation für einen oder mehrere zu kopierende Ordner, die Platzhalterzeichen enthalten kann.
Ziel Erforderlich. Zeichenfolge für das Ziel, an das die Ordner und Unterordner aus Quelle kopiert werden sollen. Platzhalterzeichen sind nicht zulässig.
überschreiben Optional. Boolescher Wert, der angibt, ob vorhandene Ordner überschrieben werden. Wenn er True ist, werden die Ordner überschrieben; ist er False, werden sie nicht überschrieben. Die Voreinstellung ist True.



Anmerkungen

Platzhalterzeichen können nur in der letzten Pfadkomponente des Arguments Quelle verwendet werden. Sie können z.B. folgendes verwenden:

FileSystemObject.CopyFolder "c:\mydocuments\letters\*", "c:\tempfolder\"

Nicht aber:

FileSystemObject.CopyFolder "c:\mydocuments\*\*", "c:\tempfolder\"

Wenn Quelle Platzhalterzeichen enthält oder Ziel mit einem Pfadtrennzeichen (\) endet, wird angenommen, daß Ziel ein vorhandener Ordner ist, in den übereinstimmende Ordner und Unterordner kopiert werden sollen. Andernfalls wird angenommen, daß Ziel der Name eines zu erstellenden Ordners ist. In beiden Fällen können beim Kopieren eines einzelnen Ordners vier Dinge passieren.

Wenn es Ziel nicht gibt, wird der Quellordner und sein gesamter Inhalt kopiert. Dies ist normalerweise der Fall.


Wenn Ziel eine vorhandene Datei ist, kommt es zu einem Fehler.


Wenn es sich bei Ziel um ein Verzeichnis handelt, wird versucht, den Ordner und seinen gesamten Inhalt zu kopieren. Wenn eine in Quelle enthaltene Datei bereits in Ziel vorhanden ist, kommt es zu einem Fehler, wenn überschreiben False ist. Andernfalls wird versucht, die Datei über die vorhandene Datei zu kopieren.


Wenn es sich bei Ziel um ein schreibgeschütztes Verzeichnis handelt, kommt es zu einem Fehler, wenn Sie versuchen, eine vorhandene schreibgeschützte Datei in dieses Verzeichnis zu kopieren und überschreiben False ist.
Es kommt außerdem zu einem Fehler, wenn eine Quelle, die Platzhalterzeichen verwendet, mit keinem der Ordner übereinstimmt.

Die CopyFolder-Methode hält beim ersten aufgetretenen Fehler an. Es wird nicht versucht, Änderungen zurückzusetzen oder aufzuheben, die vor dem Auftreten eines Fehlers durchgeführt wurden.

*************************

Gruss Rainer


  

Betrifft: AW: Ordner mit Unterordnern/Dateien kopieren von: Peter S
Geschrieben am: 06.08.2008 23:49:17

Hallo Ramses,
es sollte dann doch wie nachstehend funktionieren?

Option Explicit

Sub Kopieren()
Dim filesystem As Object
Dim name As String
name = "HSVInnSalzach"
Set filesystem = CreateObject("Scripting.FileSystemObject")
filesystem.CopyFolder "E:\Obedience\HSVInnSalzach\*", "C:\Obedience\" & name
Set filesystem = Nothing

End Sub



Sagt aber immer Pfad niocht gefunden??? Wo liegt der Fehler
Danke
Peter S


  

Betrifft: AW: Ordner mit Unterordnern/Dateien kopieren von: Erich G.
Geschrieben am: 07.08.2008 07:37:13

Hallo Peter,
mit
filesystem.CopyFolder "E:\Obedience\HSVInnSalzach\*", "C:\Obedience\" & name
versuchst du, alle Unterordner von E:\Obedience\HSVInnSalzach auf die Festplatte zu kopieren.
Der Zielordner C:\Obedience\" & name, in den diese Unterordner sollen, muss dann schon existieren.

Vermutlich brauchst du keinen Platzhalter. Probier mal
filesystem.CopyFolder "E:\Obedience\HSVInnSalzach", "C:\Obedience\"

Evtl. willst du noch den dritten Parameter (Vorh. Dateien überschreiben) verwenden,
dann musst du ,True oder ,False hinten anhängen.

Die Variable name brauchst du vielleicht nicht mehr.

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: Ordner mit Unterordnern/Dateien kopieren von: Peter S
Geschrieben am: 07.08.2008 08:10:14

Hallo Erich G,
zunächst mal vielen Dank für Deine Hilfe.

Sicherlich wäre die feste Adressierung das Einfachste. Jedoch geht es mir um folgendes:

Da meine Applikation von Vereinen genutzt wird und jeder PC ne andere Hardware/Software-Konfiguration besitzt, lese ich per

Sheets("Tabelle1").Range("A1") = Application.Version
Sheets("Tabelle1").Range("A2") = ThisWorkbook.Path

die Office Version und den augenblicklichen Pfad des Sticks bzw der CD aus.

Diese Variablen will ich dann in meine Prozedur einbauen. Meine eigentliche Applikation für die Vereine ist schon fertig, jedoch erlebe ich die abenteuerlichsten Dinge. Mal fehlen die WebComponents, mal ist ne refedit.dll ohne Verweis, mal sind die microsoft forms nicht vorhanden, manche versuchen das mit Open Office und Win 98. Und dann habe ich immer Ärger und man behauptet meine Applikation würde nicht laufen.

Jetzt habe ich die Schna.. voll davon und erstelle ein Tool, das den individuellen PC so vorbereitet, dass alles automatisiert abläuft, bis hin zum Kopieren meiner Ordnerstruktur in den richtigen Pfad und Erstellen einer Verknüpfung auf den Desktop.

Dieses Tool werde ich nach Fertigstellung auch hier auf den Server laden, denke das können etliche Leute gebrauchen.

Freue mich auf weitere Tips
Dank
Peter S


  

Betrifft: AW: Ordner mit Unterordnern/Dateien kopieren von: Peter S
Geschrieben am: 07.08.2008 08:31:51

Hallo Erich G,
im Moment sieht mein Code folgendermassen aus und funktioniert auch bereits gut.

Sub Kopieren()
Dim filesystem As Object
Dim PathE As String

MkDir "C:\Obedience"
MkDir "C:\Obedience\HSVInnSalzach"
PathE = Sheets("Tabelle1").Range("A2")

Set filesystem = CreateObject("Scripting.FileSystemObject")
filesystem.CopyFolder PathE, "C:\Obedience\HSVInnSalzach"
Set filesystem = Nothing

End Sub



Dies muss so sein da ja der Quellordner u.U. jedesmal woanders liegt, der Zielordner jedoch immer direkt unterhalb der Root.

Gruß
Peter S


  

Betrifft: AW: Ordner mit Unterordnern/Dateien kopieren von: ransi
Geschrieben am: 07.08.2008 08:45:29

HAllo

Wenn du da etwas variabler mit dem Zielordner sein willst, schau dir mal dies an:

Option Explicit

Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
    ByVal DirPath As String) As Long

Public Sub test()
Dim Ziel
Dim Quelle
Dim FSO
Ziel = "C:\Temp\zum Testen\"
Quelle = ThisWorkbook.Path
Set FSO = CreateObject("Scripting.FileSystemObject")
MakeSureDirectoryPathExists Ziel
FSO.CopyFolder Quelle, Ziel
Set FSO = Nothing
End Sub


ransi


  

Betrifft: AW: Ordner mit Unterordnern/Dateien kopieren von: Erich G.
Geschrieben am: 07.08.2008 08:43:51

Hi Peter,
du bist recht sparsam mit Infos. Weitere Tipps zu geben fällt daher schwer.

Funzt jetzt das Kopieren mit CopyFolder - erst mal mit den festen Verzeichnisnamen?

Du schreibst, dass du ThisWorkbook.Path ausliest. Ist das dann der Ordner, der komplett kopiert werden soll?

Wohin soll der Ordner kopiert werden? Ist der Name des Zielordners abhängig von ThisWorkbook.Path?

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: hat sich erledigt von: Erich G.
Geschrieben am: 07.08.2008 08:47:20

Hi Peter,
habe dein letztes Posting gerade erst gesehen.

Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: Ordner mit Unterordnern/Dateien kopieren von: Ramses
Geschrieben am: 07.08.2008 08:48:23

Hallo

am elegantesten löst du es wohl so

Option Explicit

Sub test()
    Dim myFSO As Object
    Dim tarMain As String, tarSub As String
    Set myFSO = CreateObject("scripting.Filesystemobject")
    tarMain = Range("A1")
    tarSub = Range("A2")
    If Not myFSO.folderexists(tarMain) Then
        MkDir tarMain
        ElseIf Not myFSO.folderexists(tarSub) Then
        MkDir tarSub
    End If
    With myFSO
        .copyfile ThisWorkbook.Path & "\*.*", tarMain, True
        'Wenn vorhanden
        '.copyfile ThisWorkbook.Path & "\SubFolder\*.*", tarSub, True
    End With
End Sub


Gruss Rainer


  

Betrifft: AW: Ordner mit Unterordnern/Dateien kopieren von: Peter S
Geschrieben am: 07.08.2008 09:30:23

Hallo Ramses,
wow, ne super Lösung...
Vielen Dank


 

Beiträge aus den Excel-Beispielen zum Thema "Ordner mit Unterordnern/Dateien kopieren"