Makroschleife läuft mal durch, mal nicht

Bild

Betrifft: Makroschleife läuft mal durch, mal nicht
von: Rami
Geschrieben am: 15.09.2015 11:56:29

Hallo,
ich habe ein Problem mit einer Schleife, die aus einem bestimmten Zellbereich eine
gif-Datei erzeugt. Der Zellbereich wird beim Durchlauf immer mit neuen Werten berechnet und anschließend eine Grafik erzeugt. Insgesamt ca. 30 mal.
Nun läuft das Makro mal ohne Probleme durch, mal stoppt es nach dem 10. Bild,
mal schon nach dem 2., . . . völlig wahllos. Im Debug Modus ist dann immer diese
Zeile markiert:
".Range("b5:e13").CopyPicture Appearance:=xlScreen, Format:=xlPicture"
mit der Fehlermeldung:
"Laufzeitfehler 1004: Die CopyPicture-Methode des Range-Objektes konnte nicht ausgeführt werden"
Hier der Code. Wer toll, wenn jemand eine Idee hätte . . . Danke!
Sheets("settings").Select
ActiveSheet.Range("B3").Select
m = 1
For m = 1 To Range("B3").Value
Sheets("settings").Select
ActiveCell.Offset(1, 0).Select
Sheets("_data").Range("C2").Value = ActiveCell.Value
'leeren Zwischenablage
Application.CutCopyMode = False
With Worksheets("_Die_Meisten")
.Range("C2:E13").Calculate
.Range("b5:e13").CopyPicture Appearance:=xlScreen, Format:=xlPicture
End With
With Worksheets("_data").ChartObjects.Add(0, 0, 240, 155).Chart
.Paste
.Export strpath & Sheets("_data").Range("C2").Value & "_" & strMonth & ", " & strDate & ".gif"
.Parent.Delete
End With
Next

Bild

Betrifft: AW: Makroschleife läuft mal durch, mal nicht
von: Luschi
Geschrieben am: 15.09.2015 16:30:47
Hallo Rami,
da das Speichern der neuen Datei vom Betriebsdsystem erledigt wird und nicht von Excel,
muß man hier auch kontrollieren, ob die Datei schon erstellt wurde. Denn dieser Speichern-Task _ hat in Windows eine sehr niedrige Priorität; ich mach das immer so:


Sub MachEs()
    Dim sPfad As String
    'vorheriger Vba-Code
    For m = 1 To Range("B3").Value
        'vorheriger Vba-Code
        With Worksheets("_data").ChartObjects.Add(0, 0, 240, 155).Chart
            .Paste
            sPfad = strpath & Sheets("_data").Range("C2").Value & "_" & _
                    strMonth & ", " & strDate & ".gif"
            .Export sPfad
            'prüfen, ob Datei schon angelegt ist
            Do While Dir(sPfad, vbNormal) = ""
               'wenn nicht, dann ...
               DoEvents
               ' und 1 Sek. warten
               Application.Wait Now + TimeValue("00:00:01")
            Loop
            .Parent.Delete
        End With
        'und weiter geht's
    Next
End Sub
Gruß von Luschi
aus klein-Paris

Bild

Betrifft: AW: Makroschleife läuft mal durch, mal nicht
von: Rami
Geschrieben am: 16.09.2015 15:15:27
Hallo Luschi,
vielen Dank für Deine Antwort. Ich habe das Makro entsprechend angepasst, leider ohne Erfolg.
Der Fehler poppt genauso sporadisch auf, wie vorher.
Ich habe es gerade 3x durchlaufen lassen. Beim ersten Durchlauf wurden 28 von 32 Bilddateien
ordnungsgemäß gespeichert, bis das Makro abgebrochen hat, beim 2. Durchlauf nur 2 und beim dritten
16 Dateien.
Dabei fand ich Deine Erklärung sehr schlüssig. Denn wir haben das Makro auf verschiedenen Rechnern
laufen lassen und es läuft auf einigen augenscheinlich deutlich besser, als auf anderen, was ja
durchaus mit der Performance des Rechners zu tun haben könnte. Auf allen ist Win 7 + Office10
installiert.
Hast Du noch eine Idee, was man probieren könnte?

 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA zur Prüfung auf Vollständigkeit"