Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1500to1504
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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


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

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.


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

Anzeige
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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige