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

Forumthread: Diagramm in Userform anzeigen

Diagramm in Userform anzeigen
09.11.2013 14:11:53
mikey20
HI
ich habe hier schon viel Hilfe für das anzeigen der Diagramme in der
Userform erhalten. Mein dank gilt an alle aber insbesondere beverly.
Jetzt habe ich eine wahrscheinliche Lösung gefunden.
Ich habe die anzuzeigenden Diagramme in ein neues Tabellenblatt kopiert
das aber beim starten ausgeblendet werden soll. Leider kommt es hin und wieder
vor das er das bild nicht anzeigt und den fehler ausgibt das es ein ungültiges bild
ist.
Ich habe probiert das Diagramm vorher zu selektieren / auszuwählen dann funktioniert es. Nur bin ich mir nicht sicher ob es immer funktioniert.
anbei die Makros vielleicht kann mir jemand dabei helfen
Diagramme heißen einfach Diagramm1, Diagramm2, usw.
Makro für das anzeigen des diagrammes

Sub Diagramm_Bosch_260()
ActiveSheet.ChartObjects.Select
Bild_Anzeigen "Tabelle1", "Diagramm4"
End Sub

Sub Bild_Anzeigen(strTab As String, strDia As String)
ActiveSheet.Unprotect Password:="test"
Dim Diagramm As Object
Dim dblBreite As Double
Dim dblHoehe As Double
Set Diagramm = Worksheets(strTab).ChartObjects(strDia).Chart
With Diagramm.Parent
dblHoehe = .Height
dblBreite = .Width
.Height = dblHoehe
.Width = dblBreite
Dateiname = ThisWorkbook.Path & Application.PathSeparator & "diagramm.bmp"
End With
ActiveSheet.ChartObjects.Select
Diagramm.Export Filename:=Dateiname, FilterName:="bmp"
With UserForm8
.Image1.Width = Diagramm.Parent.Width
.Image1.Height = Diagramm.Parent.Height
.Width = .Image1.Width + 15
.Height = .Image1.Height + 30
End With
UserForm8.Image1.Picture = LoadPicture(Dateiname)
With Diagramm.Parent
.Height = Diagramm.Parent.Height
.Width = Diagramm.Parent.Width
End With
Kill Dateiname
UserForm8.Show
ActiveSheet.Protect Password:="test", DrawingObjects:=False, Contents:=True, _
Scenarios:= _
True, AllowFiltering:=True
End Sub

danke
lg

Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Diagramm in Userform anzeigen
09.11.2013 19:16:58
mikey20
hi
habe in der Zwischenzeit das makro zum anzeigen des diagrammes etwas geändert.
Es funktionieren die ersten beiden Diagramme, aber ab dem 3ten Diagramm kommt wieder
die Fehlermeldung. ungültiges Bild, Fehler 481
Sub Diagramm()
Application.ScreenUpdating = False
ActiveSheet.ChartObjects.Select
Sheets("Tabelle1").Visible = True
Bild_Anzeigen "Tabelle1", "Diagramm2"
Sheets("Tabelle1").Visible = False
End Sub

Anzeige
AW: Diagramm in Userform anzeigen
10.11.2013 12:02:56
Beverly
Hi Mikey,
vielleicht solltest du mal deine Arbeitsmappe hochladen.


AW: Diagramm in Userform anzeigen
10.11.2013 22:21:13
mikey20
hallo
ja ich habe aber in der zwischenzeit herausgefunden das wenn ich in den Makro für das Diagramm
folgende Zeile hinzufüge das es angezeigt wird, jedoch springt excel gleichzeitig in eine andere
Registerkarte und zeigt mir dort das Diagramm an.
ThisWorkbook.Sheets("Tabelle1").ChartObjects(3).Activate
die oben genannte Zeile habe ich jetzt vor dem export eingefügt.
das ganze makro lautet nun so
Sub Bild_Anzeigen(strTab As String, strDia As String)
ActiveSheet.Unprotect Password:="test"
Dim Diagramm As Object
Dim dblBreite As Double
Dim dblHoehe As Double
Set Diagramm = Worksheets(strTab).ChartObjects(strDia).Chart
With Diagramm.Parent
dblHoehe = .Height
dblBreite = .Width
.Height = dblHoehe
.Width = dblBreite
Dateiname = ThisWorkbook.Path & Application.PathSeparator & "diagramm.bmp"
End With
ThisWorkbook.Sheets("Tabelle1").ChartObjects(3).Activate
Diagramm.Export Filename:=Dateiname, FilterName:="bmp"
With UserForm8
.Image1.Width = Diagramm.Parent.Width
.Image1.Height = Diagramm.Parent.Height
.Width = .Image1.Width + 15
.Height = .Image1.Height + 30
End With
UserForm8.Image1.Picture = LoadPicture(Dateiname)
With Diagramm.Parent
.Height = Diagramm.Parent.Height
.Width = Diagramm.Parent.Width
End With
Kill Dateiname
UserForm8.Show
ActiveSheet.Protect Password:="test", DrawingObjects:=False, Contents:=True,  _
Scenarios:= _
True, AllowFiltering:=True
End Sub

Anzeige
AW: Diagramm in Userform anzeigen
11.11.2013 10:30:48
mikey20
hi
kann es auch damit zusammenhängen das die Daten für das Diagramm in einem anderen Excel File abgespeichert sind?
danke
lg

AW: Diagramm in Userform anzeigen
12.11.2013 11:37:34
mikey20
hi
wollte euch fragen ob es möglich ist das diagramm vor dem export zu selektieren, damit
diese fehlermeldung verschwindet.
vielleicht könnt ihr mir dabei helfen.
danke
lg

AW: Diagramm in Userform anzeigen
12.11.2013 11:50:48
Beverly
Hi,
wer sagt dir denn definitv, dass die Fehlermeldung weg geht, wenn du das Diagramm selektierst?
Ich wiederhole mich noch einmal: lade deine Mappe hoch, damit man das nachvollziehen kann. Falls du das nicht tun möchtest, bin ich dann raus.


Anzeige
AW: Diagramm in Userform anzeigen
12.11.2013 11:58:21
mikey20
danke für die antwort, leider hat meine mappe 800 makros und die diagramme kann ich nicht posten.
aber was ich noch wissen wollte kann es sein das wenn das Diagramm optisch aufgebessert wurde
das diese Fehlermeldung kommt.
Beispielsweise habe ich einen leuchtenden rahmen darüber usw. falls nicht kannst du
mir vielleicht einen tipp geben wie ich die ganzen makros auf einmal entfernen kann.
das würde dann schneller beim hochladen der mappe funktionieren.
danke
lg

Anzeige
AW: Diagramm in Userform anzeigen
12.11.2013 19:00:52
mikey20
Hi
habe gerade diesen link gefunden wo dort viele user probleme mit dem export von diagrammen haben.
einmal funktioniert es einmal nicht. es ist ein excel 2010 bug.
http://social.msdn.microsoft.com/Forums/en-US/736eeb5f-7f21-4006-87ee-7748f3c83175/chartexport-creates-corrupt-files-randomly?forum=isvvba
You don't need to activate each chartobject everytime you open the userform. You need to do it only once. I usually do it when I open the workbook.
So, put the following code in your Workbook_Open event and remove it from the code snippet you just wrote:
For i = 1 To 3
Sheets("Sheet1").ChartObjects(i).Activate
Fname = ThisWorkbook.Path & "\temp" & i & ".gif"
ActiveChart.Export Filename:=Fname, FilterName:="GIF"
Next i

Anzeige
AW: Diagramm in Userform anzeigen
12.11.2013 22:33:54
Beverly
Hi,
ein Select auf die Diagramme ist nicht notwendig - es reicht, wenn du die Excel-Application wieder aktivierst, bevor du das als Bild exportierte Diagramm in das Image lädst:
Sub Bild_Anzeigen(strTab As String, strDia As String)
Dim Diagramm As Object
Dim dblBreite As Double
Dim dblHoehe As Double
Dim Dateiname As String
Set Diagramm = Worksheets(strTab).ChartObjects(strDia).Chart
With Diagramm.Parent
dblHoehe = .Height
dblBreite = .Width
.Height = dblHoehe
.Width = dblBreite
Dateiname = ThisWorkbook.Path & Application.PathSeparator & "diagramm.bmp"
End With
Diagramm.Export Filename:=Dateiname, FilterName:="bmp"
With UserForm8
.Image1.Width = Diagramm.Parent.Width
.Image1.Height = Diagramm.Parent.Height
.Width = .Image1.Width + 15
.Height = .Image1.Height + 30
End With
AppActivate Application.Caption
UserForm8.Image1.Picture = LoadPicture(Dateiname)
Kill Dateiname
UserForm8.Show
End Sub
Da das Tabellenblat mit den Diagrammen ausgeblendet ist, brauchst du auch keinen Blattschutz.


Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Diagramm in Userform anzeigen


Schritt-für-Schritt-Anleitung

  1. Diagramm erstellen: Stelle sicher, dass dein Diagramm in einem Arbeitsblatt (z.B. "Tabelle1") vorhanden ist.
  2. Userform erstellen: Füge eine Userform in deinem VBA-Projekt hinzu. Setze ein Image-Control (z.B. Image1) auf die Userform.
  3. Makro erstellen: Erstelle das folgende Makro, um das Diagramm anzuzeigen:
Sub Diagramm_Bosch_260()
    ActiveSheet.ChartObjects.Select
    Bild_Anzeigen "Tabelle1", "Diagramm4"
End Sub
  1. Bild_Anzeigen-Makro anpassen: Verwende das angepasste Bild_Anzeigen-Makro:
Sub Bild_Anzeigen(strTab As String, strDia As String)
    Dim Diagramm As Object
    Dim Dateiname As String
    Set Diagramm = Worksheets(strTab).ChartObjects(strDia).Chart
    Dateiname = ThisWorkbook.Path & Application.PathSeparator & "diagramm.bmp"
    Diagramm.Export Filename:=Dateiname, FilterName:="bmp"
    UserForm8.Image1.Picture = LoadPicture(Dateiname)
    Kill Dateiname
    UserForm8.Show
End Sub
  1. Userform anzeigen: Rufe das Diagramm_Bosch_260-Makro auf, um die Userform mit dem Diagramm anzuzeigen.

Häufige Fehler und Lösungen

  • Fehler 481: Ungültiges Bild: Dieser Fehler tritt auf, wenn das Diagramm nicht ordnungsgemäß exportiert wird.

    • Lösung: Stelle sicher, dass das Diagramm nicht auf einem ausgeblendeten Blatt liegt. Überprüfe auch, ob das Diagramm richtig ausgewählt ist, bevor du es exportierst.
  • Diagramm wird nicht angezeigt: Wenn das Bild nicht erscheint, könnte es daran liegen, dass das Excel-Fenster nicht aktiv ist.

    • Lösung: Füge AppActivate Application.Caption vor dem Laden des Bildes in das Image-Control ein.

Alternative Methoden

Eine Möglichkeit, die Aktivierung des Diagramms zu umgehen, besteht darin, das Diagramm im Workbook_Open-Ereignis zu aktivieren und zu exportieren:

Private Sub Workbook_Open()
    For i = 1 To 3
        Sheets("Tabelle1").ChartObjects(i).Activate
        Fname = ThisWorkbook.Path & "\temp" & i & ".gif"
        ActiveChart.Export Filename:=Fname, FilterName:="GIF"
    Next i
End Sub

Diese Methode sorgt dafür, dass du das Diagramm nicht jedes Mal aktivieren musst, wenn die Userform geöffnet wird.


Praktische Beispiele

Wenn du mehrere Diagramme hast, kannst du eine Schleife verwenden, um zwischen ihnen zu wechseln:

Sub AlleDiagrammeAnzeigen()
    Dim i As Integer
    For i = 1 To ActiveSheet.ChartObjects.Count
        Bild_Anzeigen "Tabelle1", "Diagramm" & i
    Next i
End Sub

Diese Methode zeigt alle Diagramme der Reihe nach an.


Tipps für Profis

  • Verwende temporäre Dateien: Anstatt das Diagramm direkt zu exportieren, kannst du temporäre Dateien verwenden, um die Leistung zu verbessern.
  • Diagramme im Hintergrund: Wenn du mit vielen Diagrammen arbeitest, kann es hilfreich sein, das Exportieren in einen Hintergrundprozess zu verlagern, um die Benutzeroberfläche nicht zu blockieren.
  • Fehlerbehandlung: Füge Fehlerbehandlungsroutinen hinzu, um unerwartete Probleme beim Exportieren oder Anzeigen der Diagramme zu vermeiden.

FAQ: Häufige Fragen

1. Warum funktioniert das Diagramm nicht, wenn es auf einem anderen Arbeitsblatt ist? Das Diagramm muss auf dem aktiven Arbeitsblatt sein, um es erfolgreich zu exportieren. Stelle sicher, dass das Arbeitsblatt sichtbar ist.

2. Kann ich mehrere Diagramme gleichzeitig anzeigen? Ja, du kannst eine Schleife verwenden, um mehrere Diagramme nacheinander anzuzeigen, wie im Beispiel "AlleDiagrammeAnzeigen" beschrieben.

3. Wie kann ich den Diagrammexport optimieren? Verwende temporäre Dateien und führe den Export in einem Hintergrundprozess durch, um die Leistung zu verbessern und die Benutzeroberfläche reaktionsschneller zu halten.

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