Problem mit Datei kopieren

::emanuel::

Erfahrenes Mitglied
Ich möchte gern bestimmte Daten kopieren. Folgende Situation:

Code:
    Zielordner = "H:\Fotos\Eigene Fotos\Fotoalbum\" & Jahr & "\" & Monat & "\" & Monat & "\" & Tage
    Quelljpg = "H:\Fotos\Eigene Fotos\Fotoalbum\Zwischenspeicher3\*.jpg"
    Quellhtmlwenig = "H:\Fotos\Eigene Fotos\Fotoalbum\etc\unten\index.htm"
    Quellhtml = "H:\Fotos\Eigene Fotos\Fotoalbum\Zwischenspeicher3\index.htm"

    FileCopy Quelljpg, Zielordner
        FileCopy Quellhtmlwenig, Zielordner
        FileCopy Quellhtml, Zielordner

Es kommt der "Laufzeitfehler 52: Dateiname oder -nummer falsch" bei der ersten FileCopy Zeile. Was ist da falsch? Ich vermute ja dass die Quellangaben falsch sind, hab ich da Recht?

Stimmt eigentlich das *.jpg bei Quelljpg wenn ich alle Jpg-Dateien aus einem Ordner kopieren möchte?
 
ja, bin mir sicher. das ist absicht :-)
das erstellen von directories funktioniert mit jahr/monat/monat/tag
ist deshalb so, weil ich die jetzige struktur beibehalten möchte.

Bin mir nur nicht mit Quelljpg sicher, das * irritiert mich ein wenig. Was sagst du?
 
*.jpg definitiv FALSCH

Also das mit dem *.jpg nicht, da FileCopy eine eindeutige zuweisung benötigt.
Vorschlag: "File"-Objekt erstellen, und diese mit einer "For..Each"-Schleife in jedem Ordner abarbeiten. Dies geht zum Beispiel mit FSO .
Ich würde es so machen wie in diesem Beispiel, nur eben mit File anstatt Folder.

gruß
thekorn
 
hi! :) tja, bin nicht wirklich weitergekommen. ich hab jetzt folgenden code:
Code:
    Dim fso1, file1, f11, folder1
    Dim ordner1 As String
    ordner1 = "H:\Fotos\Eigene Fotos\Fotoalbum\Zwischenspeicher3"
    Set fso1 = CreateObject("Scripting.FileSystemObject")
    Set file1 = fso.GetFolder(ordner1) '
    Set folder1 = file1.Files
    For Each f11 In folder1
    '
    Next
aber wie durchsucht man jetzt nach einem gewissen datentyp - in meinem fall jpg? muss man das bei Set file1 einstellen? Und was passiert dann nach For Each? Bitte helft mir - Danke!
 
:rolleyes: *grübl* weiß denn keiner genau wie man z.B. alle Jpg Dateien aus C:\ in C:\Temp kopiert?
Wäre für eure Hilfe wirklich sehr dankbar!
 
andere idee

guten abend,
da du anscheind kein problem damit hast Bibliotheken in dein Projekt einzufügen :-) , habe ich noch einen anderen, einfacheren Vorschlag:
Die "Microsoft Office Object library" bietet mit "FileSearch" eine einfache Möglichkeit.
Also zunächst die oben genannte Library über Komponenten einfügen.
Anschließend hilft folgender Code:
Code:
Public Sub jpg_kopieren(pfad As String, ziel As String)

Set fs = Application.FileSearch
With fs
    .LookIn = pfad
    .Filename = "*.jpg"
    If .Execute > 0 Then
        MsgBox "There were " & .FoundFiles.Count & _
            " file(s) found."
        For i = 1 To .FoundFiles.Count
            FileCopy .FoundFiles(i), ziel & "bild" & i & ".jpg"
        Next i
    Else
        MsgBox "There were no files found."
    End If
End With

End Sub

Public Sub start()
jpg_kopieren "H:\Fotos\Eigene Fotos\Fotoalbum\Zwischenspeicher3", "H:\Fotos\Eigene Fotos\Fotoalbum\" & Jahr & "\" & Monat & "\" & Monat & "\" & Tage
End Sub

Hoffentlich klappts so wie du dir das vorstellst

gruß
thekorn
 
da du anscheind kein problem damit hast Bibliotheken in dein Projekt einzufügen :-)
Sorry, aber ich hab erst diese Woche mit VB angefangen. Bin eigentlich eh recht erfreut darüber, wie weit ich schon bin.
Danke für die Antwort und den tollen Code!
Leider nummeriert der Code aber die Fotos neu. Statt dem i in folgender Zeile:
Code:
            FileCopy .FoundFiles(i), ziel & "\" & i & ".jpg"
wäre der ursprüngliche Dateinamen gedacht. Ist das denn machbar?

Ach übrigens: Die hinzuzufügende Datei für FileSearch lautet bei mir Microsoft Access 9.0 Object Library. Wenn ich die Microsoft Office 9.0 Object Library hinzufüge zeigt das keine Wirkung. Und weiters geht die Microsoft Access 9.0 Object Library und die Microsoft Office 9.0 Object Library bei Komponenten nicht zum hinzufügen. Ich hab jetzt einfach bei Verweise die Microsoft Access 9.0 Object Library drin. Anm: Verwende VB 6.
 
Zuletzt bearbeitet:
Zusatzfunktion

naja, mit dem einbinden hast du recht, wollte dich auch nicht kritisieren.

mit einer zusätzlichen Funktion kannst du den Dateinamen aus einer Pfadangabe extrahieren:
Code:
Public Sub jpg_kopieren(pfad As String, ziel As String)

Set fs = Application.FileSearch
With fs
    .LookIn = pfad
    .Filename = "*.jpg"
    If .Execute > 0 Then
        MsgBox "There were " & .FoundFiles.Count & _
            " file(s) found."
        For i = 1 To .FoundFiles.Count
            FileCopy .FoundFiles(i), ziel & extr_Dateiname(.FoundFiles(i))
        Next i
    Else
        MsgBox "There were no files found."
    End If
End With

End Sub

Public Sub start()
jpg_kopieren "H:\Fotos\Eigene Fotos\Fotoalbum\Zwischenspeicher3", "H:\Fotos\Eigene Fotos\Fotoalbum\" & Jahr & "\" & Monat & "\" & Monat & "\" & Tage
End Sub

Public Function extr_Dateiname(datein As String)
laenge = InStrRev(datein, "\")
extr_Dateiname = Right(datein, Len(datein) - laenge)
End Function

gruß
thekorn
 

Neue Beiträge

Zurück