In diesem Artikel werden wir auf die Änderungen und Erweiterungen eingehen, die bislang am Excel VBA Objektmodell vorgenommen wurden. Vorab, diese sind nicht unerheblich, wir haben 25 neue Objekte und über 400 Eigenschaften, Methoden oder Ereignisse gefunden, Konstanten haben wir noch nicht ermittelt. Jetzt habe ich jedoch nicht alle im Excel 2010 Objektkatalog vorhandenen Elemente manuell mit den in älteren Excel Versionen vorhandenen Einträgen verglichen, das wäre dann doch zuviel Aufwand. Das geht viel einfacher: ich habe ein Tool entwickelt, welches eine spezielle Windows Bibliothek verwendet, um alle Objekte, Methoden, Eigenschaften und Ergeignisse einer anderen Bibliothek per Code auszulesen und dann miteinander zu vergleichen. Diese kleine Anwendung werde ich übrigens zu einem späteren Zeitpunkt jedem Interessierten als Freeware zur Verfügung stellen, insofern „please stay tuned“. Eine Excel-Datei, die das Ergebnis des Tools des Vergleichs der VBA Funktionen in den verschiedenen Excel Versionen auflistet, kann vorab schonmal am Ende des Artikels heruntergeladen werden.
Schauen wir uns mal den Objektkatalog von Excel 2010 an, am VBA-Editor konnte ich bislang keine Veränderungen in Excel 2010 feststellen. Ich habe in folgender Abbildung eines der neuen Objekte ausgewählt:
Insgesamt sind beim Slicer Objekt bzw. Klasse 19 neue Eigenschaften und eine Methode zu finden. Wie in VBA üblich, viele der Eigenschaften sind von ihrem Namen her selbsterklärend.
In weiteren Artikeln werden wir einige dieser neuen Funktionen ausprobieren und Testprogramme schreiben, hier listen wir zunächst die vorläufigen neuen Objekte auf. Vorläufig deshalb, weil es sich ja um eine Technical Preview von Excel 2010 handelt und sich somit bis zur Finalversion noch einiges ändern kann. In den folgenden Beschreibungen können wir teilweise nur Vermutungen anstellen, da die Excel Hilfe noch nicht fertig ist und somit keine Dokumentation vorliegt.
Objekt | Kurzbeschreibung |
AddIns2 | Enthält dieselben Eigenschaften wie AddIn, warum diese Klassen enthalten ist, können wir noch nicht sagen. |
DataBarBorder | Dürfte ein Objekt zum Ansprechen von der Rahmen von Databars sein, ein Objekt für bedingte Formatierungen. |
DisplayFormat | Enthält einige Eigenschaften, die sich auf die Anzeige von Zellen beziehen. |
NegativeBarFormat | Scheint sich auf Elemente zur Darstellung negativer Formatierungsbalken zu beziehen. |
PivotTableChangeList | Eine Auflistung von ValueChange Objekten. |
ProtectedViewWindow | Enthält Eigenschaften zur Höhe, Breite oder Sichtbarkeit der Fenster von Dokumenten im ProtectedView Modus. |
ProtectedViewWindows | Eine Auflistung von ProtectedViewWindows Objekten. |
Slicer | Enthält Eigenschaften und Methoden zu einem Slicer. |
SlicerCache | Enthält Referenzierungen zu Slicers, SlicerCacheLevels und PivotTables, so richtig klar ist mir das noch nicht. |
SlicerCacheLevel | Wie mit dem SlicerCache, muss ich mit diesem Objekt zunächst noch experimentieren. |
SlicerCacheLevels | Eine Auflistung von SlicerCacheLevel Objekten. |
SlicerCaches | Eine Auflistung von SlicerCache Objekten. |
SlicerItem | Enthält Eigenschaften und Methoden zu einem Slicer Element. |
SlicerItems | Eine Auflistung von SlicerItem Objekten. |
SlicerPivotTables | Scheint speziell für an Pivot-Tabellen gekoppelte Slicer entworfen zu sein, da sich hier die Methoden AddPivotTable() und RemovePivotTable() vorhanden sind. |
Slicers | Eine Auflistung von Slicer Objekten. |
SparkAxes | Enthält Eigenschaften, ob vertikale und/oder horizontale Axen in einer Sparkline enthalten sind. |
SparkColor | Bezieht sich auf die Farbe von Sparklines. |
SparkHorizontalAxis | Enthält Eigenschaften zur horizontalen Achse einer Sparkline. |
Sparkline | Enthält Methoden und Eigenschaften zu einer Sparkline. |
SparklineGroup | Enthält Methoden und Eigenschaften zu einer Sparkline-Gruppe. |
SparklineGroups | Eine Auflistung von SparklineGroup Objekten |
SparkPoints | Enthält Eigenschaften, zu den Punkten einer Sparkline, wie z.B. höchste oder niedrigster Punkt. |
SparkVerticalAxis | Enthält Eigenschaften zur vertikalen Achse einer Sparkline. |
ValueChange | Ist mir noch nicht klar, wie dieses Objekt einzusetzen ist. |
Zusätzlich zu den neu hinzugefügten Objekten, wurden auch einige bereits bestehende Objekte um neue Funktionen und Eigenschaften ergänzt. Ein paar habe ich mal herausgesucht, da diese recht interessant scheinen:
AppEvents | |
ProtectedViewWindowActivate ProtectedViewWindowBeforeEdit ProtectedViewWindowOpen ProtectedViewWindowResize |
Neue Ereignisse, die sich auf ProtectedView Fenster beziehen. |
Application | |
ActiveProtectedViewWindow | Ähnlich wie ActiveSheet, in diesem Fall bezogen auf das aktuell aktive ProtectedView Fenster. |
ClusterConnector | Ein String, wofür kann ich noch nicht sagen. |
IsSandboxed | Dürfte True sein, wenn die Mappe im Sandbox Modus geladen wurde. |
SaveISO8601Dates | Die Umsetzung der neuen Einstellung in den Excel Optionen. |
AxisTitle | |
Width | Breite einer Achsenbeschriftung, Double. |
CalculatedMember | |
DisplayFolder Dynamic FlattenHierarchies |
Einige neue Eigenschaften zum Objekt CalculatedMember. |
ChartTitle | |
Formula | Formel im Diagrammtitel. |
DisplayUnitLabel | |
Formula | Formel in der Einheitenbeschriftung. |
PivotTable | |
AllocateChanges Allocation AllocationMethod AllocationValue Slicers Summary |
Einige neue Methoden und Eigenschaften für Pivot-Tabellen. |
Range | |
ClearHyperlinks | Hyperlinks in einem Bereich löschen. |
DisplayFormat | Neue Eigenschaft bzw. Referenz auf ein DisplayFormat Objekt. |
SparklineGroups | Referenz auf Sparkline Gruppe in einem Bereich. |
Shapes | |
AddSmartArt | Neue Methode zu Hinzufügen eines SmartArt Objektes als Shape, ähnlich wie z.B. AddTextbox(). |
SpellingOptions | |
ArabicStrictAlefHamza | Umsetzung einer neuen Einstellung in den Excel Optionen. |
WorksheetFunction | |
Beta_Dist Beta_Inv Confidence_Norm |
Beispiele zur Umsetzung der neuen Excel Formeln |
Wie sehen, VBA wird von Microsoft in Excel 2010 fleißig weiterentwickelt. Abschließend eine Abbildung zum Ergebnisblatt des Tools:
Diese Datei können Sie hier Excel 2010 VBA im Vergleich zu Excel 2007 und 2003 herunterladen. Beachten Sie bitte, dass dieser Link nur angeklickt funktioniert und wenn Ihr Browser einen Referer sendet. Ausserdem übernehmen wir natürlich in keinster Weise irgendeine Haftung für die Richtigkeit der Angaben in der Datei.
Ich habe ein sehr unglückliches Problem mit EXCEL 2010 (englische Version), dass ich vor einem Monat auf meinem neuen PC (INTEL 6-core CPU, 6GB DRAM) installiert habe.
Die Anwendung:
Ich bin ein „Financial Engeneer“, habe sehr viel Spass am Modellieren und Umsetzung der Ideen in C++ in Kombination mit VBA/EXCE. Noch mit EXCEL 2002 habe ich eine Workbook für eine Monte Carlo Simulation entwickelt, das auf EXCEL 2002 für 1,000 Pfade etwa 2.5h benötigt. Im dazugehörigen VBA Macro sind eine gute Anzahl von C++ Dll eingebettet. Eine von diesen liest etwa 120mb Daten ein, die dann sehr effizient in Excel hieneingeschossen werden. Durch diesen Trick hat das Workbook nur etwa 10mb Größe, und die Anwendung kann überhaupt nur in EXCEL umgesetzt werden.
Das Problem:
In EXCEL 2010 benötigt das gleiche Programm jetzt plötzlich knapp 10h, mit anderen Worten, ich kann hier das Programm nicht mehr verwenden, die Lösung des Problems ist wieder nur Mainframes und Clusters vorbehalten. An MS habe ich schon geschrieben. Deren leider nutzloser Vorschlag: Umbennen der Registry Einträge von EXCEL in EXCEL_old.
Was ist hier zu tun? Haben Sie eine Idee oder kennen Sie jemanden mit einer Idee. haben Kollegen ähnliche Probleme etc.
mit freundlichen Grüßen, Harald Hubbes