Office Web Charts

Die "Office Web Charts können bei Microsoft kostenfrei herunter geladen werden und können auch ohne Office Lizenz genutzt werden. (dann allerdings nicht interaktiv). Sie eignen sich aber um per Skript (also auch VBScript) Daten in Grafiken zu verwandeln und z.B. als GIF-Bilder abzuspeichern. Die Software ist auch Bestandteil von Office 2003. Suchen Sie mal nach OWC11.EXE auf der Installations-CD. Ansonsten können Sie natürlich auch einfach den Download bemühen:

Office 2003 Add-in: Office Web Components
http://www.microsoft.com/downloads/details.aspx?familyid=7287252c-402e-4f72-97a5-e0fd290d4b76&displaylang=en
Microsoft Office 2003 Web Components Service Pack 1 (SP1) für the 2007 Microsoft Office System
http://www.microsoft.com/downloads/details.aspx?familyid=C815DFFA-D5F3-4B71-BF46-13721BD44682&displaylang=en

Info: Die WebComponents XP werden ab 31 July 2012 nicht mehr zum Download bereit stehen.
Quelle: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=9468

Für .NET gibt es mit den "Microsoft Chart Controls für Microsoft .NET Framework 3.5" auf http://www.microsoft.com/download/en/details.aspx?id=14422 einen Nachfolger

Danach haben Sie aber schon alle Komponenten auf dem Computer, um automatisiert Grafiken zu erstellen. Sogar die Online Hilfe ist mit gekommen. Das liegt alles in "C:\Program Files\Common Files\Microsoft Shared\Web Components\11\1031"

Ein Musterchart

Ich habe schon etwas suchen müssen, bis ich auch unter VBScript mein erstes Chart erstellt habe. Hier ein Beispielcode, der einfach ein Chart mit drei Balken generiert. Die Daten sind hier als Konstanten hinterlegt. Es ist natürlich möglich, die Daten aus anderen Quellen zu holen, aber das ist nicht mehr Fokus der MSXFAQ.

' Create Chart Object
Set oChart = CreateObject("OWC11.Chartspace")
Set oChartConstants = oChart.Constants

' set global parameters
oChart.Border.Color = oChartConstants.chColorNone

'set values to display
sCaption = "Messagestatus"
dim Categories(2), Values(2)
Categories(0) = "Zugestellt" : Categories(1) = "NDR" : Categories(2) = "Unbekannt"
Values(0) = 10 : Values(1) = 5 : Values(2) = 2

'generate chart
oChart.Charts.Add
oChart.Charts(0).Type = oChart.Constants.chChartTypeColumnClustered
oChart.Charts(0).SeriesCollection.Add
oChart.Charts(0).SeriesCollection(0).Caption = sCaption
oChart.Charts(0).SeriesCollection(0).SetData oChartConstants.chDimCategories, oChartConstants.chDataLiteral, categories
oChart.Charts(0).SeriesCollection(0).SetData oChartConstants.chDimValues, oChartConstants.chDataLiteral, values
oChart.Charts(0).HasLegend = True
oChart.Charts(0).HasTitle = True

' save chart as file
oChart.ExportPicture ".\owc.gif", "gif", 300, 200

Hier können Sie das Beispiel auch herunter laden:

owcsample.vbs
Bitte nach dem Download als VBS-Datei speichern

Der Aufruf erfolgt wieder mit

CSCRIPT owcsample.vbs

Die Ausgabe finden Sie dann als "owc-gif" im aktuellen Verzeichnis und kann mit jedem Browser oder BIldbetrachter angezeigt werden

Verwenden aus VBA und anderen IDEs.

In den meisten EntwicklungsUmgebungen muss man den Verweis auf die DLL erst im Projekt addieren. Beim Office VBA-Editor findet man die Einstellungen unter "Extras - Verweise"

Verweis einbinden

Sollte der Eintrag nicht in der Liste erscheinen, dann müssen Sie manuell über Durchsuchen erst die OWC11.DLL angeben. Im Objektkatalog kann man sich dann schön die verschiedenen Objekte und deren Methoden und Eigenschaften anschauen

OWS11 Objekte

Sehr hilfreich ist die im gleichen Pfad ebenfalls installierte OWCVBA11.CHM-Datei mit dem Objektmodell:

Offen

Leider konnte ich bislang nicht in Erfahrung bringen, wie ich das generierte Bild direkt auf dem Bildschirm anzeigen lassen und dabei auch noch verändern kann. Ein IE mit einer "Reload-"Funktion als Betrachter und einem Export nach jeder Änderung würde ich nicht als Lösung ansehen. Vermutlich ist dann wieder der Moment gekommen, solche Lösungen gleich mit .NET zu schreiben.

Weitere Links