VBA Excel - kopieren mit Angabe von Dateinamen und kompletten Ordner kopieren
Hallo,
meine Frage wäre folgende.
Ich bekomme per Mail jeweils einen Link zurgesendet.
Dieser Link endet mal bei einem Ordner oder mal mit Dateiname.
Wenn ich bei meinem Programm den Link ohne Dateinamen einfüge passiert leider nichts.
Gibt es eine Möglichkeit das es egal ist ob mit oder ohne Dateinamen.
D.h wenn der Link nur einen Ordner enthält, soll er einfach den kompletten Inhalt des Ordners kopieren.
Wenn Link inkl. Dateinamen, soll er nur diese Datei kopieren.
Ziel und Quell Vereichnis ist immer unterschiedlich.
Kann mir jemand sagen wie ich kopiere egal ob mit oder ohne Dateinamen.
Derzeit benutze ich FileCopy welches bei Angabe inkl. Dateinamen einwandfrei funktioniert. Nur ohne Dateiname kopiert er mir leider nicht den kompletten Ordner ins Zielverzeichnis.
Danke
Gruß
Andreas
meine Frage wäre folgende.
Ich bekomme per Mail jeweils einen Link zurgesendet.
Dieser Link endet mal bei einem Ordner oder mal mit Dateiname.
D:\test
D:\test\datei1.txt
Gibt es eine Möglichkeit das es egal ist ob mit oder ohne Dateinamen.
D.h wenn der Link nur einen Ordner enthält, soll er einfach den kompletten Inhalt des Ordners kopieren.
Wenn Link inkl. Dateinamen, soll er nur diese Datei kopieren.
Ziel und Quell Vereichnis ist immer unterschiedlich.
Kann mir jemand sagen wie ich kopiere egal ob mit oder ohne Dateinamen.
Derzeit benutze ich FileCopy welches bei Angabe inkl. Dateinamen einwandfrei funktioniert. Nur ohne Dateiname kopiert er mir leider nicht den kompletten Ordner ins Zielverzeichnis.
Danke
Gruß
Andreas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 299766
Url: https://administrator.de/forum/vba-excel-kopieren-mit-angabe-von-dateinamen-und-kompletten-ordner-kopieren-299766.html
Ausgedruckt am: 04.04.2025 um 19:04 Uhr
8 Kommentare
Neuester Kommentar

Set fso = CreateObject("Scripting.Filesystemobject")
item = "D:\test"
If fso.FileExists(item) Then
fso.CopyFile item, "C:\ziel\"
Elseif fso.FolderExists(item) then
fso.CopyFolder item, "C:\ziel\"
End If

Die Pfade für die Destination müssen einen abschließenden Backslash aufweisen wenn nur ein Ordner angeben wird!
Kann man auch in der Doku nachlesen wenn man sie denn mal bemühen würde
immer das selbe
https://msdn.microsoft.com/de-de/library/office/gg264819.aspx
Und mein IF-Konstrukt hast du ja komplett auskommentiert ???... Wenn du diese Dinge beachtetste geht das Problemlos!!!
Kann man auch in der Doku nachlesen wenn man sie denn mal bemühen würde
https://msdn.microsoft.com/de-de/library/office/gg264819.aspx
Und mein IF-Konstrukt hast du ja komplett auskommentiert ???... Wenn du diese Dinge beachtetste geht das Problemlos!!!

Zitat von @BloodyRulz:
Wenn ich einen Pfad angebe OHNE Dateinamen kommt ein Laufzeitfehler 79
in dieser Codezeile
Dann zeig doch mal was in deinen Variablen genau drin steht, hellsehen kann ich leider noch nicht ...Wenn ich einen Pfad angebe OHNE Dateinamen kommt ein Laufzeitfehler 79
in dieser Codezeile
> fso.CopyFolder sSourceFile & "*", sDestFile ' Testweise mit *
> fso.CopyFolder sSourceFile, sDestFile
>
Und das der Zielpfad einen abschließenden Backslash haben muss hatte ich oben schon erwähnt...
Beispiele
fso.CopyFolder "c:\Pfad", "c:\ziel\"
Wenn ich aber die Variablen Überwache, sind diese i.O. Also die Pfade lassen sich öffnen und sind auch vorhanden.
Leider kann ich sie nicht sehen Und was und wie du aus den Ordner kopieren willst steht hier auch nirgendwo.
PS: Du kannst es vielleicht nicht glauben, aber viele Dokumentationen sind für mich nur Bahnhof.
Zumal auf der Seite ja Beispiele drin stehen die einwandfrei funktionieren!

Da haben wir ja schon den ersten Fehler die Quelle hat einen abschließenden Backslash der kommt da weg das gilt nur für die Destination.
Zweitens die Methode CopyFolder kopiert nur Ordner rekursiv und keine Dateien, d.h. das bei der Angabe in dieser Art
c:\Quelle\*
bei der Source alle Ordner des Ordners Quelle ins Ziel kopiert werden.
Für Dateien benutzt man dagegen CopyFile, bei dem man in der Source mit Wildcards arbeiten kann, man aber dann in der Destination einen Backslash am Ende benutzen muss.
Die Zielordner sollten natürlich schon angelegt worden sein.
Entsprechende Berechtigungen des Users setze ich natürlich auf den Pfaden vorraus!
Was kapierst du daran nicht ????
Mit minimalem ausprobieren hätte man das ebenfalls schon lange gelöst.
Echt schwer mit dir, sorry.
Zweitens die Methode CopyFolder kopiert nur Ordner rekursiv und keine Dateien, d.h. das bei der Angabe in dieser Art
c:\Quelle\*
bei der Source alle Ordner des Ordners Quelle ins Ziel kopiert werden.
Für Dateien benutzt man dagegen CopyFile, bei dem man in der Source mit Wildcards arbeiten kann, man aber dann in der Destination einen Backslash am Ende benutzen muss.
Die Zielordner sollten natürlich schon angelegt worden sein.
Entsprechende Berechtigungen des Users setze ich natürlich auf den Pfaden vorraus!
Was kapierst du daran nicht ????
Mit minimalem ausprobieren hätte man das ebenfalls schon lange gelöst.
Echt schwer mit dir, sorry.