online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon little-key vom 09.10.2022, 13:17 Options

VBA FileCopy-Problem

Hallo an alle,

heute nur ein kleines Problem:

<code>
Dim strDatei As Variant
Dim strQuelle1 As String
Dim strQuelle2 As String
Dim strZiel As String
Dim i, MAX As Integer
MAX = ActiveSheet.Cells(Rows.Count, 6).End(xlUp).Row
For i = 1 To MAX
Range("F" & i).Select
Selection.Replace What:="MON", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Selection.Replace What:=" /*.jpg", Replacement:=".jpg", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
strDatei = ActiveCell
strQuelle1 = "U:\Grosser\Bilder\Monacor\" & strDatei
strQuelle2 = "U:\Grosser\Bilder\No_Image.jpg"
strZiel = "U:\Projekte\Websites\_Grosser\Cart\" & strDatei
If Dir("U:\Grosser\Bilder\Monacor\" & strDatei) = "" Then
ActiveCell = "No_Image.jpg"
Else
FileCopy strQuelle1, strZiel
End If
Next
FileCopy strQuelle2, strZiel
</code>

Warum wird in der letzten Zeile das Bild nicht kopiert? Es existiert definitiv auf Quelle2. Was ist da falsch?


Antwort schreiben

Antwort 1 von Hajo_Zi vom 09.10.2022, 13:35 Options

Hi,

ich habe mir den Code nicht angesehen und ich habe den Sachverhlat auch nicht geprüft, darum nur Vermutung. Das Bild ist größer als eine Zelle?

Gruß Hajo

Antwort 2 von malSchauen vom 09.10.2022, 16:01 Options

Hi,

Du meinst sicher, dass das Bild in Quelle1 (also "U:\Grosser\Bilder\Monacor\" existiert. Und wenn es das tut, dann wird es auch kopiert. Du hast im Code nur einen LogikFehler eingebaut.

btw: Freut mich ja, dass Du zumindest meinen Hinweis auf den Code-Tag beherzigst. Wenn Du nun statt der spitzen Klammern <> noch die eckigen Klammern [ ] benutzen würdest, dann klappt das auch mit dem Code. ;-)

Zurück zum LogikFehler:
Du läufst durch Deine For-Schleife und kommst beim letzten Bild an. Dieses wird kopiert. Nun kommst Du aus der For-Schleife raus und was passiert? Genau, es wird mit dem Bild aus strQuelle2 überschrieben, also mit No_Image.jpg. Füge hinter der Zeile mit Next einmal ein Stop ein, wie im folgenden zu sehen:
Sub test()
Dim strDatei As Variant
Dim strQuelle1 As String
Dim strQuelle2 As String
Dim strZiel As String
Dim i, MAX As Integer
MAX = ActiveSheet.Cells(Rows.Count, 6).End(xlUp).Row
For i = 2 To MAX
    Range("F" & i).Select
    Selection.Replace What:="MON", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Selection.Replace What:=" /*.jpg", Replacement:=".jpg", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    strDatei = ActiveCell
    strQuelle1 = "U:\Grosser\Bilder\Monacor\" & strDatei
    strQuelle2 = "U:\Grosser\Bilder\_NoImage.jpg"
    strZiel = "U:\Projekte\Websites\_Grosser\Cart\" & strDatei
    If Dir("U:\Grosser\Bilder\Monacor\" & strDatei) = "" Then
        ActiveCell = "_NoImage.jpg"
    Else
        FileCopy strQuelle1, strZiel
    End If
Next
Stop
FileCopy strQuelle2, strZiel
End Sub


Leere Dein Zielverzeichnis und starte Deinen Code. Dieser wird dann bei Stop, wie zu erwarten anhalten. Nun schau mal ins Zielverzeichnis. Da ist das letzte Bild nun drin. Wechsle wieder auf den VBEditor und drücke die Taste F5. Nachkontrolle im Ziel: letztes Bild überschrieben.

Abhilfe, wenn Ich Dein Vorhaben noch richtig im Gedächtnis habe:
    strQuelle1 = "U:\Grosser\Bilder\Monacor\" & strDatei
    strQuelle2 = "U:\Grosser\Bilder\_NoImage.jpg"
    strZiel = "U:\Projekte\Websites\_Grosser\Cart\" & strDatei
    If Dir("U:\Grosser\Bilder\Monacor\" & strDatei) = "" Then
        ActiveCell = "_NoImage.jpg"
        FileCopy strQuelle2, strZiel
    Else
        FileCopy strQuelle1, strZiel
    End If
Next
End Sub


bye
malSchauen

Antwort 3 von malSchauen vom 09.10.2022, 16:10 Options

Hi,

@little-key
Ups...
Ich habe im Code den ich grad gepostet habe, das No_Image.jpg in _NoImage.jpg geändert, weil ich die Verzeichnisstruktur zum Testen eben mit dieser Bezeichnung noch auf der Platte hatte. Bitte beim Copy&Paste berücksichtigen.

bye
malSchauen

Antwort 4 von little-key vom 10.10.2022, 11:31 Options

Hi mal Schauen,

mit den Klammern bekomme ich auch noch hin...

Zum Code:
Deine Version funktioniert auch nicht. Da ich das von Dir nicht kenne, nochmals alles genau angesehen.
Kann ja nicht funktionieren, habe wir wohl alle übersehen:
strZiel ist ja schon mit einem Dateinamen belegt undzwar mit ActiveCell.
Da ja "No_Image" nur einmal ins Zielverzeichnis kopiert werden muss, wa es ganz einfach:

FileCopy strQuelle2, "U:\Projekte\Websites\_Grosser\Cart\No_Image.jpg"

Sehe ich doch richtig, oder??

Da lässt man andere für sich nachdenken und es ist doch so einfach....
Trotzdem vielen, vielen Dank.

Schönen Sonntag noch Mario

Ähnliche Themen

VBA-Problem mit CHR(13)
Kauz  09.11.2009 - 411 Hits - 10 Antworten

Problem mit einen VBA Code
speedy71  23.01.2010 - 203 Hits - 4 Antworten

Problem mit zwei VBA Befehle
juppjuppes  20.05.2010 - 255 Hits - 9 Antworten

Problem Schreibschutz in verbindung mit VBA
juppjuppes  21.05.2010 - 104 Hits - 2 Antworten

VBA GetOpenFileName Problem
123harald123  23.06.2010 - 76 Hits - 2 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026