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

Userform Dashboard-sehr komplex

Forumthread: Userform Dashboard-sehr komplex

Userform Dashboard-sehr komplex
08.07.2016 01:15:49
Abbas
Hallo,
ich wende mich an Euch, nachdem ich alles durchsucht und nichts gefunden habe..meine Dashboard droht als totes Projekt vor der Geburt zu scheitern, und dies an der Anzeige...Bitte ummaehr dringende Hilfe, VBA Freunde:
Infos: win7 / 64 bit, Office 2016
1) In einem Blatt kommen die berechneten Daten und werden arrangiert, daraus ergeben sich 20 Diagramme (jeweils Aktueller Monat, akt. Quartal, YtD und Year to End) dann für 4 Vertriebsregionen, und als gesamt Untnehmen...also 5x4...
2) diese Diagramme haben die gleiche Grösse und ich habe die arrangiert, sodass es aussieht wie eine Tabelle(4x5)
3) auf einem anderen Blatt habe ich mit dem Camera Tool ein Bild dieses Konstruktes stehen...
Frage1: kann mann die Qualität dieses letzen Bildes beeiflussen (gepixelt, blass, Schatten..sieht schlecht aus)?
Mit einer Sub habe ich dieses Bild exportiert...leider nur über den Umweg, CopyPicture, dann ein neues Diagramm erzeugt und das Bild rein, dann als Datei exportiert...
Frage2: kann man hier die Qualität beeinflussen?
Frage3: wie sind Eure Erfahrungen bzgl. Export Format (JPG, BMP, GIF)? und wie soll ich die Abmessungen einstellen (Pt. cm, etc....)
Das exportierte Bild soll in einer UserForm benutzt werden...hier auch die selben Fragen, denn das istbdas eigentliche Ziel.
Ich bin Euch im Voraus sehr dankbar für jeglichen Gedankenansatz, Hilfe, Links, Tutos und Snippets oder gar Workarrounds.
Freundliche Grüsse
Abbas

Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform Dashboard-sehr komplex
08.07.2016 08:41:25
Beverly
Hi Abbas,
gruppiere die 5x4 Diagramme und exportiere die Gruppierung anstelle der Kamerakopie. Benutze außerdem API - das ergibt eine wesentlich bessere Qualität.
https://www.herber.de/bbs/user/106850.xlsm


Anzeige
AW: Userform Dashboard-sehr komplex
08.07.2016 14:37:17
Abbas
Du bist mein Held!!!!!!!! :-)
Vielen vielen Dank!
Wenn ich fragen darf, wie stellst Du die Abmessungen und Skalierungen ein? Sowohl beim Chart Group als auch beim Image Object auf der Userform? oder geschieht es automatisch?
Weil sonst müsste ich schon die Abmessungen der Chart Gruppe in cm nehmen und in Pt konvertieren, damit ich die selben WxH auf der Userform als Platzhalter einstelle.
Noch eine ganz letzte Frage:
Wie kann ich die Prozedur (ExportPicture) mit Variablen aufrufen (Blatt+Charts/Chart Group), Ziel ist es, dass wenn der User etwas anderes selektiert, läuft mein Code und erstellt ein anderes Bericht, woher ich nun ein anderes Diagramm erstelle und in der Selben Userform einsetze (also das Bild davor ersetzen)...irgendwann werde ich auf ein Drilldown und Drill Up zurück kommen müssen um aus den Bildern Detail Diagramme oder die Quelldaten anzuzeigen im Listform drunter...
Mit besten Dank!!!!Echt Du hast mein WE gerettet!!! Aller Achtung!!..und Grüße aus Aachen.

Anzeige
Grafik in UserForm anzeigen
08.07.2016 15:43:40
Beverly
Ich habe keinerlei Größeneinstellungen vorgenommen, außer dass ich im Image auf dem UserForm die Eigenschaften PictureSizeMode auf Zoom und PictureAlignment auf Center gestellt habe. Ich würde mal darauf tippen, dass die Größe in der Function CreatePicture festgelegt wird, kann mich da aber nicht festlegen.
Auch bei deiner Frage bezüglich variablen Aufrufs mit Übergabe des Blatt- und Shape-Namen kann ich dir leider nicht weiterhelfen. Ich würde zwar ein weiteres Start-Makro verwenden und die betreffenden Prameter an die Sub ExportPicture übergeben, aber das funktioniert leider nicht wie gewünscht. Mit API kenne ich mich allerdings auch nicht aus - ich stelle die Frage deshalb auf Offen (vielleicht liest sie ja Nepumuk, von dem der Code stammt).


Anzeige
AW: Grafik in UserForm anzeigen
08.07.2016 16:05:47
Abbas
Tausend Dank!!! Die Halbe Miete ist bereits durch Deine tatkräftige Hilfe da...hoffentlich klappt es mit dem Rest, denn sonst muss ich jedes Mal die Chart Groups abmessen, in Pt. umrechnen (geht auch über Formel, DPI/cm/Pt....), dann die UserForm im Bereich der Image auch mit skalieren, bevor es zum verlinken des Bildes kommt.
Viele Grüße
Abbas

Anzeige
Thread bezüglich API offen
08.07.2016 17:29:19
Beverly


wozu API?
09.07.2016 12:06:43
Michael
Hi zusammen,
ich habe eine frühere Antwort von Beverly gefunden...
https://www.herber.de/forum/archiv/1128to1132/1130567_Grafik_oder_Bereich_mit_VBA_als_Bild_speichern.html
... mit der das ganz ohne API geht.
Ich habe es mal an die vorliegenden Bedürfnisse angepaßt, und es scheint zu tun, allerdings mit dem kleinen Schönheitsfehler, daß ein zusätzlicher Rahmen außenrum angezeigt wird (den Karin vielleicht weg bekommt, *falls* er stören sollte).
Der Code sieht dann so aus:
Option Explicit
Sub BilderExportierenShape()
Dim shBild As Shape
Dim quer#, hoch#
Set shBild = ActiveSheet.Shapes("Gruppieren 5")
quer = shBild.Width: hoch = shBild.Height
BildExportShape shBild
Set shBild = Nothing
'    Debug.Print "Höhe: " & hoch & " Breite: " & quer
frmChart.Height = 60 + Int(hoch + 1)
frmChart.Width = 40 + Int(quer + 1)
With frmChart.imgChart
.Left = 20
.Top = 20
.Picture = LoadPicture("C:\Temp\Bild1.bmp")
.AutoSize = True
End With
'    Kill "C:\Temp\Bild1.bmp"
frmChart.Show
End Sub
Sub BildExportShape(shExport As Shape)
Dim chDiagramm As ChartObject
Application.ScreenUpdating = False
shExport.CopyPicture Appearance:=xlScreen, Format:=xlBitmap
Set chDiagramm = ActiveSheet.ChartObjects.Add(0, 0, shExport.Width, shExport.Height)
With chDiagramm.Chart
.Paste
.Export Filename:="C:\Temp\Bild1.bmp", FilterName:="BMP"
' andere Grafikformate sind möglich
End With
chDiagramm.Delete
Set chDiagramm = Nothing
Set shExport = Nothing
Application.ScreenUpdating = True
End Sub
Schöne Grüße,
Michael

Anzeige
Weil das eine bessere...
09.07.2016 13:51:14
Beverly
Hi Michael,
...Qualität gibt (s. Thread in der hochgeladenen Mappe).


AW: Weil das eine bessere...
09.07.2016 15:59:06
Michael
Hi Karin,
na gut...
Aber er hatte ja Probleme mit der Größe; die kann er entweder vorher oder nachher ermitteln:
Sub BildDatenVorExport()
Dim quer#, hoch#
quer = ActiveSheet.Shapes("Gruppieren 5").Width
hoch = ActiveSheet.Shapes("Gruppieren 5").Height
MsgBox "hoch: " & hoch & " quer: " & quer
' das sind 478,25*299
End Sub
Sub BildDatenNachExport()
'Quelle:
'https://msdn.microsoft.com/de-de/library/bb979154.aspx?f=255&MSPPError=-2147217396
Dim quer&, hoch&
Dim ff As Integer
' Binäres Öffnen und exakt passendes Auslesen einer BMP-Datei
ff = FreeFile()
Open "C:\Temp\Bild1.bmp" For Binary Access Read As #ff
Get #ff, 19, quer
Get #ff, 23, hoch
Close #ff
' Anzeige der ermittelten Information:
MsgBox "Die Grafik in C:\Temp\Bild1.bmp ist " & vbNewLine & _
quer & " Pixel breit und " & vbNewLine & _
hoch & " Pixel hoch.", _
vbInformation, "BMP-Analyse"
' das sind bei mir 641/402, das muß also noch mit einem Korrektur-
' faktor verrechnet werden:
' 402/299=1,344481605
frmChart.Height = 60 + Int(hoch / 1.344481605 + 1)
frmChart.Width = 40 + Int(quer / 1.344481605 + 1)
With frmChart.imgChart
.Left = 20
.Top = 20
.Picture = LoadPicture("C:\Temp\Bild1.bmp")
.AutoSize = True
End With
'    Kill "C:\Temp\Bild1.bmp"
frmChart.Show
End Sub
Schöne Grüße,
Michael

Anzeige
Das Problem ist weniger die Größe...
09.07.2016 17:34:36
Beverly
Hi Michael,
...als mehr die Übergabe an variablen Inhalten für den Namen des Tabellenblattes und des Diagramms/der Diagramme, da diese ja - so wie ich es verstanden habe - aus verschiedenen Tabellenblättern genommen werden sollen.
Allerdings könnte man das vielleicht umgehen, indem man die betreffenden Diagramme in ein extra Tabellenblatt kopiert, sie dort gruppiert und dann wie gehabt mit dem API-Code exportiert.


Anzeige
dann hab ich was mißverstanden... API?!
09.07.2016 17:56:19
Michael
Hi Karin,
schaun wir halt mal, was Abbas sagt...
Derweil stelle ich wieder auf offen.
Schönes Wochenende,
Michael

AW: Das Problem ist weniger die Größe...
12.07.2016 14:18:49
Abbas
Hallo Zusammen,
vielen Dank für die Antworten.
Beide Lösungen probiert und die mit der API hat sehr gut funktioniert..ich musste nur die Abmessungen kurz ändern und die Charts optimieren.
In der Registry hatte ich zuvor die Resolution auf 300dpi eingestellt beim BMP Export, ich weiß nicht ob man vielleicht hier mehr einstellen kann (600?)
Ich baue noch den Code von Michael ein um die Größe bei den nächsten Charts automatisch einzustellen, damit die Charts in die UserForm passen...vielen Dank!
Jetzt stellt sich die Frage zur Skalierbarkeit des Ganzen (was würdet Ihr vorschlagen: 2-3 Versionen von alles UserForms bereit stellen, Nutzer PC-Display ablesen und dem entsprechend die richtige UserForm anzeigen? oder gibt es die möglichkeit eine UserForm jeweils zu erstellen, PC Display ablesen und die UserForms passen sich automatisch an? (Bsp. entwickelt auf 1680x1050 und user haben 800x600, oder 1280x720)...
Vielen vielen Dank im Voraus!
Mit freundlichen Grüßen
Abbas

Anzeige
AW: Das Problem ist weniger die Größe...
14.07.2016 00:07:18
Abbas
Hallo Zusammen,
ich bin am verzweifeln irgendwie...ich habe eine anonymisierte Version beigefügt...
https://www.herber.de/bbs/user/106998.xlsm
Mein Ziel ist einfach formuliert:
Der User öffnet die Dashboard, findet dort ein Selektor für die Berichte die er anzeigen darf und kann. Nach der Auswahl klickt er auf "generate Report", dann zieht mein Programm im Hintergrund los und berechnet alles oder holt die fertigen Reports aus einer anderen Datei...in dem Beispiel, habe ich eine Auswertung die man am besten mit den 20 Charts darstellen kann, die habe ich gruppiert und dann Dank Euch als Bild in die UserForm gebracht (Skala vs. Resolution) war ein Krampf, daher habe ich sogar jeden Chart angepasst und dann als OGRA2 daneben gestellt...es funktioniert einigermaßen auf meine 1680x1050 Auflösung, jedoch auf andere Monitore nicht...die ListBox ebenfalls...ich bitte Euch um Mithilfe! ich komme hier wirklich nciht mehr weiter :-(
Vielen vielen vielen Dank im Voraus!
Grüße
Abbas

Anzeige
AW: Das Problem ist weniger die Größe...
14.07.2016 15:46:43
Michael
Hi Abbas,
ich denke, morgen ist die Frage nicht mehr sichtbar.
Du kannst sie ja erneut öffnen, aber gib dann bitte den Link zu hier an.
Ich habe mal kurz reingeschaut, sehe aber gewisse Probleme auch in der Lesbarkeit auf kleineren Bildschirmen: im Prinzip kommt es evtl. gar nicht so sehr auf die Auflösung an als auf das Seitenverhältnis: 1680/1050=8/5; 800/600=4/3 usw.
Je nach dem müßte das Ding dann auch in sich anders aufgebaut sein: ich denke da an Button- bzw. deren Schriftgrößen....
VIELLEICHT wäre es eine Sache, das Ganze statt in einer UF auf einem "leeren" Tabellenblatt zu machen, das kann ein User einstellen, wie er mag - und wirft Deine ganze Arbeit über den Haufen, ich weiß.
Eine Anregung dazu findest Du hier: https://www.herber.de/forum/messages/1503520.html
Schöne Grüße & gutes Gelingen (die "30 Kreuze"),
Michael
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Userform Dashboard in Excel erstellen


Schritt-für-Schritt-Anleitung

  1. Daten vorbereiten: Stelle sicher, dass deine Daten in einem Excel-Blatt gut strukturiert sind. Diese Daten werden später für die Diagramme verwendet.

  2. Diagramme erstellen: Erstelle 20 Diagramme, die deine Daten für den aktuellen Monat, das aktuelle Quartal sowie für das Jahr darstellen. Gruppiere diese Diagramme in einer 4x5-Anordnung, um einen übersichtlichen Vertriebs Dashboard in Excel zu erstellen.

  3. Kamerawerkzeug nutzen: Nutze das Kamera-Tool, um ein Bild deiner Diagramme zu erstellen.

  4. Exportieren der Diagramme: Verwende VBA, um die Diagramme als Bilder zu exportieren. Hier ist ein Beispielcode, den du verwenden kannst:

    Sub ExportBilder()
       Dim shBild As Shape
       Set shBild = ActiveSheet.Shapes("Gruppieren 5")
       shBild.CopyPicture Appearance:=xlScreen, Format:=xlBitmap
       ' Hier den Exportcode einfügen
    End Sub
  5. UserForm erstellen: Füge eine UserForm in deinem VBA-Projekt hinzu. Setze das Image-Control auf deiner UserForm, um die exportierten Bilder anzuzeigen.

  6. Bild einfügen: Verwende den folgenden Code, um das Bild auf der UserForm anzuzeigen:

    With frmChart.imgChart
       .Picture = LoadPicture("C:\Temp\Bild1.bmp")
       .AutoSize = True
    End With

Häufige Fehler und Lösungen

  • Bildqualität: Wenn die exportierten Bilder pixelig oder blass sind, überprüfe die DPI-Einstellungen in der Registry. Stelle sicher, dass du eine hohe Auflösung, z.B. 300 oder 600 DPI, wählst.

  • Größe der UserForm: Wenn die UserForm nicht richtig skaliert, passe die Abmessungen der Diagramme und der UserForm an. Hierzu kannst du die Breite und Höhe der Shapes abfragen und entsprechend anpassen.

  • Variablenübergabe: Bei der Verwendung von Variablen zur Übergabe von Blatt- und Diagrammnamen stelle sicher, dass diese korrekt definiert sind.


Alternative Methoden

  • API verwenden: Eine alternative Methode zur Verbesserung der Bildqualität ist die Verwendung der Windows API für den Bildexport. Diese Methode kann eine höhere Bildqualität liefern und sollte in Betracht gezogen werden, wenn die Standardmethoden nicht ausreichen.

  • Direktes Exportieren ohne API: In einigen Fällen kann ein direkter Export ohne API ausreichen. Überprüfe die Ergebnisse und teste beide Methoden.


Praktische Beispiele

Hier ist ein einfaches Beispiel für den Export eines Diagramms:

Sub ExportDiagramm()
    Dim chDiagramm As ChartObject
    Set chDiagramm = ActiveSheet.ChartObjects("MeinDiagramm")
    chDiagramm.Chart.Export Filename:="C:\Temp\MeinDiagramm.png", FilterName:="PNG"
End Sub

Verwende diesen Code, um Diagramme in verschiedenen Formaten wie PNG oder BMP zu exportieren, je nach deinen Anforderungen für das Dashboard.


Tipps für Profis

  • Skalierung der UserForm: Erstelle mehrere Versionen deiner UserForms für verschiedene Bildschirmauflösungen oder implementiere eine dynamische Skalierung basierend auf der Bildschirmauflösung des Benutzers.

  • Optimierung der Diagramme: Achte darauf, dass die Diagramme optisch ansprechend sind, indem du Farben und Schriftarten anpasst.

  • Benutzerinteraktion: Füge interaktive Elemente wie Dropdown-Menüs oder Buttons hinzu, um dem Benutzer die Auswahl von Berichten oder Diagrammen zu erleichtern.


FAQ: Häufige Fragen

1. Wie kann ich die Qualität des exportierten Bildes verbessern? Die Qualität kann durch die Verwendung einer höheren DPI-Einstellung beim Export verbessert werden. Stelle sicher, dass du 300 DPI oder mehr in der Registry einstellst.

2. Wie kann ich meine UserForm an verschiedene Bildschirmgrößen anpassen? Du kannst die Größe der UserForm dynamisch anpassen, indem du die Bildschirmauflösung abfragst und die Abmessungen entsprechend anpasst. Alternativ kannst du mehrere Versionen der UserForm für verschiedene Auflösungen erstellen.

3. Welche Formate sind am besten zum Exportieren von Diagrammen? Für die meisten Anwendungen sind PNG und BMP die besten Formate. PNG bietet eine bessere Qualität, während BMP einfach zu handhaben ist.

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