Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro funktioniert nur im Einzelschritt

Forumthread: Makro funktioniert nur im Einzelschritt

Makro funktioniert nur im Einzelschritt
21.10.2019 10:41:42
Fabio
Hallo liebe Excel Profis,
ich habe vor einiger Zeit ein Excel Makro in Windows 7 geschrieben, welches ein Diagramm per Knopfdruck in einem individuellen (durch Eingabefelder bestimmbaren) Dateipfad als Bild im JPG Format abspeichert.
Dazu wird ein leeres ChartObject angelegt und das Diagramm eingefügt.
Seit dem "Upgrade" auf Windows 10 wird allerdings nur ein leeres Bild im richtigen Dateipfad abgespeichert.
Mir ist aufgefallen, dass das Makro im Einzelschritt einwandfrei funktioniert, allerdings soll das nicht das Ziel sein.
Das Makro muss bis zur markierten Zeile im Einzelschritt ausgeführt werden und kann danach normal ausgeführt werden, deshalb vermute ich den Fehler in dieser Zeile. Verwende ich vielleicht einen Befehl, der im Windows 10 nicht richtig funktioniert ?
Hier der relevante Code:
Sub BildExportShape(shBild As Shape)
Dim chDiagramm As ChartObject
Application.ScreenUpdating = False
shBild.CopyPicture Appearance:=xlScreen, Format:=xlPicture
Set chDiagramm = ActiveSheet.ChartObjects.Add(0, 0, shBild.Width, shBild.Height)
Dim nn As String
Dim nv As String
Dim nm As String
Dim fb As String
Dim pf As String
nn = Range("C32").Text
nv = Range("C33").Text
nm = nn + "_" + nv
fb = Range("C36").Text
pf = nm + " " + "(" + Range("C34").Text + ")"
On Error GoTo FEHLERMELDUNG
If Cells(32, 3) "" And Cells(33, 3) "" And Cells(34, 3) "" And Cells(36, 3) "" Then
GoTo SPEICHERN
SPEICHERN:
With chDiagramm.Chart
.Paste
.Export Filename:="F:\70-Ausbildung\Studenten\DHBW-MA\3-Ehemalige Studenten\" & pf & "\8-Eigene_Dateien\Tätigkeitsbeurteilungen\Tätigkeitsbeurteilung_" & nm & "_" & fb & ".jpg", FilterName:="JPG"
End With
chDiagramm.Delete
Set chDiagramm = Nothing
Set shBild = Nothing
Application.ScreenUpdating = True
Exit Sub
Ich würde mich sehr über eure Hilfe freuen,
Gruß Fabio
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Das Phänomen hatte ich schon öfters ...
21.10.2019 10:49:31
lupo1
... und zwar oft bei grafischen/Diagramm-Dingen.
Einen Reim kann ich mir nicht drauf machen. Ob es zeitkritisch ist? Dann würde der Befehl Application.Wait helfen.
AW: Makro funktioniert nur im Einzelschritt
21.10.2019 11:05:31
Luschi
Hallo Fabio,
eine Antwort findest Du hier: https://www.herber.de/forum/archiv/1616to1620/1616857_ChartPaste_Problem.html
Gruß von Luschi
aus klein-Paris
Anzeige
.Select nötig (war Nepumuks Antwort)
21.10.2019 11:09:05
lupo1
... danke, das kann möglicherweise auch in anderen Fällen helfen.
Trotzdem ist die Abweichung zw. Einzelschritt und Durchlauf damit nicht erklärt. Möglicherweise ist ein Durchlauf ohne Select zu schnell, der Einzelschritt eben nicht.
AW: .Select nötig (war Nepumuks Antwort)
21.10.2019 11:16:58
Luschi
Hallo Lupo1,
ich glaube, daß dies Anpassungen an die Net-AddIn-Programmierung mit Vb.Net & C# sind.
Gerade bei Grafik-Objekten ist die Vba-Selektiererei wieder ganz groß in Mode gekommen.
Gruß von Luschi
aus klein-Paris
Anzeige
;
Anzeige

Infobox / Tutorial

Makro für Diagrammexport in Excel optimieren


Schritt-für-Schritt-Anleitung

  1. Makro erstellen: Starte mit dem Erstellen eines neuen Makros in Excel. Öffne den VBA-Editor (ALT + F11) und füge den folgenden Code ein:

    Sub BildExportShape(shBild As Shape)
        Dim chDiagramm As ChartObject
        Application.ScreenUpdating = False
        shBild.CopyPicture Appearance:=xlScreen, Format:=xlPicture
        Set chDiagramm = ActiveSheet.ChartObjects.Add(0, 0, shBild.Width, shBild.Height)
    
        Dim nn As String, nv As String, nm As String, fb As String, pf As String
        nn = Range("C32").Text
        nv = Range("C33").Text
        nm = nn & "_" & nv
        fb = Range("C36").Text
        pf = nm & " (" & Range("C34").Text & ")"
    
        On Error GoTo FEHLERMELDUNG
        If Cells(32, 3) <> "" And Cells(33, 3) <> "" And Cells(34, 3) <> "" And Cells(36, 3) <> "" Then
            GoTo SPEICHERN
        End If
    
    SPEICHERN:
        With chDiagramm.Chart
            .Paste
            .Export Filename:="F:\70-Ausbildung\Studenten\DHBW-MA\3-Ehemalige Studenten\" & pf & "\8-Eigene_Dateien\Tätigkeitsbeurteilungen\Tätigkeitsbeurteilung_" & nm & "_" & fb & ".jpg", FilterName:="JPG"
        End With
    
        chDiagramm.Delete
        Set chDiagramm = Nothing
        Set shBild = Nothing
        Application.ScreenUpdating = True
        Exit Sub
    
    FEHLERMELDUNG:
        MsgBox "Ein Fehler ist aufgetreten!"
    End Sub
  2. Führe das Makro aus: Teste das Makro und stelle sicher, dass der Diagrammexport funktioniert.


Häufige Fehler und Lösungen

  • Leeres Bild wird gespeichert: Wenn das Makro nur ein leeres Bild speichert, könnte es an der Geschwindigkeit des Durchlaufs liegen. Versuche, den Befehl Application.Wait vor dem Export einzufügen:

    Application.Wait (Now + TimeValue("0:00:01")) ' Wartet 1 Sekunde
  • Diagramm nicht selektiert: Möglicherweise musst du das Diagramm vorher selektieren. Füge .Select vor dem Kopieren des Bildes hinzu:

    shBild.Select

Alternative Methoden

Falls das Makro weiterhin nicht wie gewünscht funktioniert, kannst du auch die folgende Methode ausprobieren:

  1. Diagramm manuell exportieren: Klicke mit der rechten Maustaste auf das Diagramm und wähle "Als Bild speichern".
  2. Screenshot: Verwende die Snipping Tool Funktion in Windows, um das Diagramm manuell als Bild zu speichern.

Praktische Beispiele

Hier ist ein Beispiel für den Diagrammexport mit einem anderen Dateipfad:

.Export Filename:="C:\Users\DeinBenutzername\Bilder\" & pf & "\Diagramm_" & nm & ".jpg", FilterName:="JPG"

Achte darauf, dass der Pfad existiert, um Fehler beim Speichern zu vermeiden.


Tipps für Profis

  • Debugging: Nutze die Debugging-Funktion im VBA-Editor (F8), um den Code Schritt für Schritt zu durchlaufen und Fehler zu identifizieren.
  • Code optimieren: Reduziere die Anzahl der Select-Befehle, um die Ausführung zu beschleunigen.
  • Variablen klar benennen: Verwende aussagekräftige Namen für Variablen, um die Lesbarkeit des Codes zu verbessern.

FAQ: Häufige Fragen

1. Warum funktioniert das Makro nur im Einzelschritt?
Das liegt häufig an der Geschwindigkeit der Ausführung. Einzelschritte verlangsamen die Abläufe, sodass alle Aktionen korrekt verarbeitet werden.

2. Welche Excel-Version wird benötigt?
Das Makro sollte in Excel 2010 oder höher funktionieren, da es Funktionen nutzt, die in älteren Versionen möglicherweise nicht verfügbar sind.

3. Wie speichere ich das Makro?
Speichere die Datei im .xlsm-Format (Excel-Arbeitsmappe mit Makros), um sicherzustellen, dass das Makro erhalten bleibt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige