Cover

Inhalt

Titelei

Impressum

Inhalt

Vorwort

Konzeption des Buchs

TEIL I Intuitiver Einstieg

1 Das erste Makro

1.1 Begriffsdefinition

1.2 Was ist Visual Basic für Applikationen?

1.3 Beispiel: Eine Formatvorlage mit einem Symbol verbinden

1.4 Beispiel: Makro zur Eingabeerleichterung

1.5 Beispiel: Einfache Literaturdatenbank

1.6 Beispiel: Formular zur Berechnung der Verzinsung von Spareinlagen

1.7 Beispiel: Benutzerdefinierte Funktionen

1.8 Beispiel: Analyse komplexer Tabellen

1.9 Beispiel: Vokabeltrainer

1.10 Weitere Beispiele zum Ausprobieren

2 Neuerungen in Excel 2007 bis 2016

2.1 Die Benutzeroberfläche RibbonX

2.2 Neue Programmfunktionen

2.3 Office-Add-ins

2.4 Neues in Sachen Programmierung

2.4.1 Kompatibilitätskrücke Add-ins-Register

2.4.2 Zu- und Abgänge im Objektmodell

2.4.3 Anpassen der Benutzeroberfläche

2.4.4 Die Grenzen von VBA

2.5 Probleme und Inkompatibilitäten

TEIL II Grundlagen

3 Entwicklungsumgebung

3.1 Komponenten von VBA-Programmen

3.2 Komponenten der Entwicklungsumgebung

3.3 Codeeingabe in Modulen

3.4 Makros ausführen

3.5 Makroaufzeichnung

3.6 Tastenkürzel

4 VBA-Konzepte

4.1 Variablen und Felder

4.1.1 Variablenverwaltung

4.1.2 Felder

4.1.3 Syntaxzusammenfassung

4.2 Prozedurale Programmierung

4.2.1 Prozeduren und Parameter

4.2.2 Gültigkeitsbereich von Variablen und Prozeduren

4.2.3 Verzweigungen (Abfragen)

4.2.4 Schleifen

4.2.5 Syntaxzusammenfassung

4.3 Objekte

4.3.1 Der Umgang mit Objekten, Methoden und Eigenschaften

4.3.2 Der Objektkatalog (Verweise)

4.3.3 Übersichtlicher Objektzugriff durch das Schlüsselwort With

4.3.4 Objektvariablen

4.3.5 Syntaxzusammenfassung

4.4 Ereignisse

4.4.1 Ereignisprozeduren

4.4.2 Ereignisprozeduren deaktivieren

4.4.3 Überblick über wichtige Excel-Ereignisse

4.4.4 Ereignisse beliebiger Objekte empfangen

4.4.5 Ereignisprozeduren per Programmcode erzeugen

4.4.6 Syntaxzusammenfassung

4.5 Programmierung eigener Klassen

4.5.1 Eigene Methoden, Eigenschaften und Ereignisse

4.5.2 Collection-Objekt

4.5.3 Beispiel für ein Klassenmodul

4.5.4 Beispiel für abgeleitete Klassen (Implements)

4.5.5 Eine Klasse als FileSearch-Ersatz

4.5.6 Syntaxzusammenfassung

4.6 Operatoren in VBA

4.7 Virenschutz

4.7.1 Vorhandene Schutzmaßnahmen nutzen

4.7.2 Viren selbst entdecken

4.7.3 Vertrauenswürdige Makros ohne Einschränkungen ausführen

5 Programmiertechniken

5.1 Zellen und Zellbereiche

5.1.1 Objekte, Methoden, Eigenschaften

5.1.2 Anwendungsbeispiele

5.1.3 Syntaxzusammenfassung

5.2 Arbeitsmappen, Fenster und Arbeitsblätter

5.2.1 Objekte, Methoden und Eigenschaften

5.2.2 Anwendungsbeispiele

5.2.3 Syntaxzusammenfassung

5.3 Datentransfer über die Zwischenablage

5.3.1 Zellbereiche kopieren, ausschneiden und einfügen

5.3.2 Zugriff auf die Zwischenablage mit dem DataObject

5.3.3 Syntaxzusammenfassung

5.4 Umgang mit Zahlen und Zeichenketten

5.4.1 Numerische Funktionen, Zufallszahlen

5.4.2 Zeichenketten

5.4.3 Umwandlungsfunktionen

5.4.4 Syntaxzusammenfassung

5.5 Rechnen mit Datum und Uhrzeit

5.5.1 VBA-Funktionen

5.5.2 Tabellenfunktionen

5.5.3 Anwendungs- und Programmiertechniken

5.5.4 Feiertage

5.5.5 Syntaxzusammenfassung

5.6 Umgang mit Dateien, Textimport/-export

5.6.1 File System Objects ‒ Überblick

5.6.2 Laufwerke, Verzeichnisse und Dateien

5.6.3 Textdateien (TextStream)

5.6.4 Binärdateien (Open)

5.6.5 Excel-spezifische Methoden und Eigenschaften

5.6.6 Textdateien importieren und exportieren

5.6.7 Textexport für Mathematica-Listen

5.6.8 Syntaxzusammenfassung

5.7 Benutzerdefinierte Tabellenfunktionen

5.7.1 Grundlagen

5.7.2 Beispiele

5.8 Schutzmechanismen

5.8.1 Bewegungsradius einschränken

5.8.2 Zellen, Tabellenblätter und Arbeitsmappen schützen

5.8.3 Schutzmechanismen für den gemeinsamen Zugriff

5.8.4 Programmcode und Symbolleiste schützen

5.8.5 Syntaxzusammenfassung

5.9 Konfigurationsdateien, individuelle Konfiguration

5.9.1 Optionen

5.9.2 Optionseinstellungen per Programmcode

5.9.3 Konfigurationsdateien

5.10 Tipps und Tricks

5.10.1 Geschwindigkeitsoptimierung

5.10.2 Zeitaufwendige Berechnungen

5.10.3 Effizienter Umgang mit Tabellen

5.10.4 Zusammenspiel mit Excel-4-Makros

5.10.5 Excel-Version feststellen

5.10.6 Hilfe zur Selbsthilfe

5.10.7 Syntaxzusammenfassung

6 Fehlersuche und Fehlerabsicherung

6.1 Hilfsmittel zur Fehlersuche (Debugging)

6.1.1 Syntaxkontrolle

6.1.2 Reaktion auf Fehler

6.1.3 Kontrollierte Programmausführung

6.2 Fehlertolerantes Verhalten von Programmen

6.3 Reaktion auf Programmunterbrechungen

6.4 Syntaxzusammenfassung

7 Dialoge

7.1 Vordefinierte Dialoge

7.1.1 Excel-Standarddialoge

7.1.2 Die Funktionen MsgBox und InputBox

7.1.3 Die Methode Application.InputBox

7.2 Selbst definierte Dialoge

7.2.1 Veränderungen gegenüber Excel 5/7

7.2.2 Einführungsbeispiel

7.3 Der Dialogeditor

7.4 Die MS-Forms-Steuerelemente

7.4.1 Beschriftungsfeld (Label)

7.4.2 Textfeld (TextBox)

7.4.3 Listenfeld (ListBox) und Kombinationslistenfeld (ComboBox)

7.4.4 Kontrollkästchen (CheckBox) und Optionsfelder (OptionButton)

7.4.5 Buttons (CommandButton) und Umschaltbuttons (ToggleButton)

7.4.6 Rahmenfeld (Frame)

7.4.7 Multiseiten (MultiPage), Register (TabStrip)

7.4.8 Bildlaufleiste (ScrollBar) und Drehfeld (SpinButton)

7.4.9 Anzeige (Image)

7.4.10 Formelfeld (RefEdit)

7.4.11 Das UserForm-Objekt

7.5 Steuerelemente direkt in Tabellen verwenden

7.6 Programmiertechniken

7.6.1 Zahleneingabe

7.6.2 Dialoge gegenseitig aufrufen

7.6.3 Dialoge dynamisch verändern

7.6.4 Umgang mit Drehfeldern

8 Die Benutzeroberfläche von Excel 2016

8.1 Menüs und Symbolleisten

8.1.1 Manuelle Bearbeitung von Menüs und Symbolleisten

8.1.2 Programmierte Veränderung von Menüs und Symbolleisten

8.1.3 Programmiertechniken

8.1.4 Blattwechsel über die Symbolleiste

8.1.5 Excel-Anwendungen in Befehlsleisten integrieren

8.1.6 Syntaxzusammenfassung

8.2 Das Menüband

8.2.1 Manuelle Anpassung des Menübands

8.2.2 Programmierte Anpassung des Menübands

8.2.3 RibbonX-Controls

8.2.4 Erweiterte Programmiertechniken

8.2.5 Klassische Menüs und Symbolleisten nachbilden

8.2.6 Anpassungen permanent verfügbar machen

8.2.7 Syntaxzusammenfassung

8.3 Die Symbolleiste für den Schnellzugriff

8.3.1 Symbolleiste für den Schnellzugriff manuell anpassen

8.3.2 Symbolleiste für den Schnellzugriff programmiert anpassen

8.3.3 Syntaxzusammenfassung

8.4 Kontextmenüs

8.4.1 Kontextmenüs programmiert anpassen

8.4.2 Syntaxzusammenfassung

8.5 Die Backstage-Ansicht

8.5.1 Grundlagen der Programmierung

8.5.2 Backstage-spezifische Steuerelemente

8.5.3 Befehle in den FastCommand-Bereich einfügen

8.5.4 Eigene Backstage-Tabs anlegen

8.5.5 Excel-eigene Backstage-Tabs anpassen

8.5.6 Syntaxzusammenfassung

TEIL III Anwendung

9 Mustervorlagen und „intelligente“ Formulare

9.1 Grundlagen

9.1.1 Gestaltungselemente für „intelligente“ Formulare

9.1.2 Mustervorlagen mit Datenbankanbindung

9.2 Beispiel: Das „Speedy“-Rechnungsformular

9.3 Beispiel: Abrechnungsformular für einen Car-Sharing-Verein

9.4 Grenzen „intelligenter“ Formulare

10 Diagramme und Zeichnungsobjekte

10.1 Umgang mit Diagrammen

10.1.1 Grundlagen

10.1.2 Diagrammtypen

10.1.3 Diagrammelemente (Diagrammobjekte) und Formatierungsmöglichkeiten

10.1.4 Ausdruck

10.2 Programmierung von Diagrammen

10.2.1 Objekthierarchie

10.2.2 Programmiertechniken

10.3 Beispiel: Automatische Datenprotokollierung

10.3.1 Die Bedienung des Beispielprogramms

10.3.2 Programmcode

10.4 Syntaxzusammenfassung

10.5 Die Zelldiagramme der Bedingten Formatierung

10.5.1 Programmierung von Datenbalkendiagrammen

10.5.2 Programmierung von Farbskalendiagrammen

10.5.3 Programmierung von Symbolsatzdiagrammen

10.5.4 Syntaxzusammenfassung

10.6 Sparklines-Diagramme

10.6.1 Programmierung von Sparklines-Diagrammen

10.6.2 Syntaxzusammenfassung

10.7 SmartArt-Diagramme

10.7.1 Programmierung von SmartArt-Diagrammen

10.7.2 Benutzerdefinierte SmartArt-Diagramme

10.7.3 Syntaxzusammenfassung

10.8 Neue Diagrammtypen in Excel 2016

10.8.1 Programmierung von Wasserfall-Diagrammen

10.8.2 Programmierung von Histogrammen

10.8.3 Programmierung von Pareto-Diagrammen

10.8.4 Programmierung von Kastengrafik-Diagrammen

10.8.5 Programmierung von Treemap-Diagrammen

10.8.6 DirectoryMap ‒ Inhaltsverzeichnisse visualisieren

10.8.7 Programmierung von Sunburst-Diagrammen

10.9 Zeichnungsobjekte (Shapes)

11 Datenverwaltung in Excel

11.1 Grundlagen

11.1.1 Einleitung

11.1.2 Kleines Datenbankglossar

11.1.3 Excel versus Datenbanksysteme

11.2 Datenverwaltung innerhalb von Excel

11.2.1 Eine Datenbank in Excel erstellen

11.2.2 Daten über die Datenbankmaske eingeben, ändern und löschen

11.2.3 Daten sortieren, suchen, filtern

11.3 Datenverwaltung per VBA-Code

11.3.1 Programmiertechniken

11.3.2 Syntaxzusammenfassung

11.4 Datenbank-Tabellenfunktionen

11.5 Tabellen konsolidieren

11.5.1 Grundlagen

11.5.2 Konsolidieren per VBA-Code

11.6 Beispiel: Abrechnung eines Car-Sharing-Vereins

11.6.1 Bedienung

11.6.2 Überblick über die Komponenten der Anwendung

11.6.3 Programmcode

12 Zugriff auf externe Daten

12.1 Grundkonzepte relationaler Datenbanken

12.2 Import externer Daten

12.2.1 Datenimport mit Power Query

12.2.2 Datenimport mit MS Query

12.2.3 Das QueryTable-Objekt

12.2.4 Excel-Daten exportieren

12.3 Datenbankzugriff mit der ADO-Bibliothek

12.3.1 Einführung

12.3.2 Verbindungsaufbau (Connection)

12.3.3 Datensatzlisten (Recordset)

12.3.4 SQL-Kommandos (Command)

12.3.5 SQL-Grundlagen

12.3.6 Syntaxzusammenfassung

12.4 Beispiel: Fragebogenauswertung

12.4.1 Überblick

12.4.2 Aufbau des Fragebogens

12.4.3 Aufbau der Datenbank

12.4.4 Programmcode

13 Datenanalyse in Excel

13.1 Daten gruppieren (Teilergebnisse)

13.1.1 Einführung

13.1.2 Programmierung

13.2 Pivot-Tabellen (Kreuztabellen)

13.2.1 Einführung

13.2.2 Gestaltungsmöglichkeiten

13.2.3 Pivot-Tabellen für externe Daten

13.2.4 Pivot-Tabellenoptionen

13.2.5 Pivot-Diagramme

13.3 Programmiertechniken

13.3.1 Pivot-Tabellen erzeugen und löschen

13.3.2 Aufbau und Bearbeitung vorhandener Pivot-Tabellen

13.3.3 Interne Verwaltung (PivotCache)

13.3.4 Syntaxzusammenfassung

14 XML- und Listenfunktionen

14.1 Bearbeitung von Listen

14.2 XML-Grundlagen

14.3 XML-Funktionen interaktiv nutzen

14.4 XML-Programmierung

15 Excel-Programmierung für Fortgeschrittene

15.1 Excel-Add-ins

15.2 Excel und das Internet

15.2.1 Excel-Dateien als E-Mail versenden

15.2.2 HTML-Import

15.2.3 HTML-Export

15.3 Smart Tags

15.4 Web Services nutzen

15.5 Dynamic Link Libraries (DLLs) verwenden

15.6 ActiveX-Automation (COM)

15.6.1 Excel als Client (Steuerung fremder Programme)

15.6.2 Excel als Server (Steuerung durch fremde Programme)

15.6.3 Neue Objekte für Excel (ClipBoard-Beispiel)

15.6.4 Object Linking and Embedding (OLE)

15.6.5 Automation und Visual Basic .NET

15.6.6 Programme ohne ActiveX starten und steuern

15.6.7 Syntaxzusammenfassung

15.7 64-Bit-Programmierung

15.7.1 Kompatibilitätsprobleme

15.7.2 Ein problematisches (32-Bit-)Beispiel

15.7.3 Syntaxzusammenfassung

15.8 Visual Studio Tools for Office

15.8.1 Bestandsaufnahme: die Grenzen von VBA

15.8.2 VSTO: Profi-Werkzeug für Profi-Entwickler

15.8.3 Grundlagen des VSTO-Einsatzes

15.8.4 Beispielprojekte

15.9 Office-Add-ins

15.9.1 Bestandteile eines Office-Add-ins

15.9.2 Typen von Office-Add-ins

15.9.3 Werkzeuge für die Entwicklung von Office-Add-ins

15.9.4 Beispiel 1: SimpleApp

15.9.5 Das JavaScript-API für Office

15.9.6 Beispiel 2: ComplexApp

Anhang

A Inhalte der Download-Dateien zum Buch

A.1 Objektreferenz

A.2 Hyperlinks

A.3 Beispieldateien

B Verwendete Literatur

C Nachweis der Grafiken & Icons

Michael Kofler
Ralf Nebelo

Excel 2016 programmieren

Abläufe automatisieren, (Office-)Add-ins und Anwendungen entwickeln

Die Autoren:

Michael Kofler, Graz
Ralf Nebelo, Bocholt

Alle in diesem Buch enthaltenen Informationen, Verfahren und Darstellungen wurden nach bestem Wissen zusammengestellt und mit Sorgfalt getestet. Dennoch sind Fehler nicht ganz auszuschließen. Aus diesem Grund sind die im vorliegenden Buch enthaltenen Informationen mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autoren und Verlag übernehmen infolgedessen keine juristische Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieser Informationen – oder Teilen davon – entsteht.

Ebenso übernehmen Autoren und Verlag keine Gewähr dafür, dass beschriebene Verfahren usw. frei von Schutzrechten Dritter sind. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Buch berechtigt deshalb auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen­ und Markenschutz­Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften.

Bibliografische Information der Deutschen Nationalbibliothek: Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.

Dieses Werk ist urheberrechtlich geschützt. Alle Rechte, auch die der Übersetzung, des Nachdruckes und der Vervielfältigung des Buches, oder Teilen daraus, vorbehalten. Kein Teil des Werkes darf ohne schriftliche Genehmigung des Verlages in irgendeiner Form (Fotokopie, Mikrofilm oder ein anderes Verfahren) – auch nicht für Zwecke der Unterrichtsgestaltung – reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden.

Lektorat: Brigitte Bauer-Schiewek
Copyediting: Petra Kienle, Fürstenfeldbruck
Herstellung: Irene Weilhart
Umschlagdesign: Marc Müller-Bremer, www.rebranding.de, München
Umschlagrealisation: Stephan Rönigk

Print-ISBN: 978-3-446-43866-8
E-Pub-ISBN: 978-3-446-45081-3

Verwendete Schriften: SourceSansPro und SourceCodePro (Lizenz)
CSS-Version: 1.0

Font License Zurück zum Impressum

Copyright 2010, 2012, 2014 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL ----------------------------------------------------------- SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ----------------------------------------------------------- PREAMBLE The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. DEFINITIONS "Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. "Reserved Font Name" refers to any names specified as such after the copyright statement(s). "Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). "Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. "Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. PERMISSION & CONDITIONS Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: 1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. 2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. 3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. 5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. TERMINATION This license becomes null and void if any of the above conditions are not met. DISCLAIMER THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.

Vorwort

Excel bietet von Haus aus ein riesiges Spektrum von Funktionen. Wozu sollten Sie dann noch selber Makros, Add-ins diverser Art und andere Programmerweiterungen mit VBA, Visual Studio oder anderen Werkzeugen entwickeln? Weil Sie damit …

Damit lassen sich Excel-Anwendungen in ihrer Bedienung so weit vereinfachen, dass sie von anderen Personen (auch von Excel-Laien) ohne lange Einweisung verwendet werden können.

Das notwendige Know-how für alle diese Formen der Excel-Programmierung finden Sie in diesem Buch. Übrigens: Auch wenn Excel 2016 auf dem Titel steht, so gilt das Gesagte ‒ oder besser: Geschriebene ‒ doch für alle Programmversionen ab 2007 (und zum größten Teil auch für die Versionen davor).

Wenn es Dinge gibt, die in einer älteren Version anders funktionieren als in Excel 2016, so wird das ausdrücklich erwähnt. Falls das wider Erwarten einmal nicht der Fall sein sollte, bitten wir schon jetzt um Verzeihung. Bei so vielen Versionen verlieren auch erfahrene Autoren manchmal den Überblick.

2007 bis 2016 ‒ Neues in Excel

Mit der radikal neuen Multifunktionsleiste, die die früheren Menüs und Symbolleisten plötzlich sehr alt aussehen ließ (und letztlich in Rente schickte), war Excel 2007 eine echte Revolution. Excel 2010 ließ es entwicklungstechnisch deutlich ruhiger angehen und bescherte uns statt einer großen Revolution viele kleine Evolutionen.

Eine davon war der neue Oberflächeneditor, mit dem wir nicht mehr nur die unscheinbare „Symbolleiste für den Schnellzugriff“ nach unseren Wünschen konfigurieren dürfen, sondern die komplette Multifunktionsleiste. Die heißt nun übrigens „Menüband“ (siehe Abschnitt 8.2) und beschränkt sich auf solche Befehle, die der Bearbeitung von Dokumentinhalten dienen. Für alle anderen Befehle, die das Dokument als Ganzes betreffen (Speichern, Drucken etc.), hat Microsoft die sogenannte Backstage-Ansicht (siehe Abschnitt 8.5) erfunden, die das Office-Menü von Excel 2007 ersetzt. Menüband und Backstage-Ansicht bilden seither die Kommandozentrale von Excel und zeichnen sich durch eine konsequente Aufgabenteilung aus.

Konsequenz zeigte Microsoft auch bei der Oberflächenprogrammierung. Hier gilt seit Excel 2010 für alle Bestandteile ‒ Menüband, Backstage-Ansicht, Symbolleiste für den Schnellzugriff und Kontextmenüs ‒ das gleiche „duale Prinzip“: XML-Code bestimmt das Design, VBA-Code die Funktion. Mit dem Know-how, das Sie sich womöglich schon bei der Anpassung der früheren Multifunktionsleiste erworben haben, können Sie jetzt also die gesamte Excel-Oberfläche verändern und eigene Lösungen integrieren (Kapitel 8).

Evolutionär präsentierte sich Excel 2010 auch bei der Visualisierung von Zahlen. So fanden die SmartArt-Diagramme (Abschnitt 10.7), die mit der Version 2007 eingeführt wurden, Eingang in das Objektmodell, so dass man sie nun programmatisch erstellen oder verändern kann. Darüber hinaus hat Excel 2010 der Welt die sogenannten Sparklines-Diagramme (Abschnitt 10.6) beschert, ein seinerzeit völlig neuer und ebenfalls programmierbarer Diagrammtyp, der in eine einzelne Zelle passt und sich insbesondere für die Visualisierung von Trends eignet.

Wo Licht ist, ist bekanntlich auch Schatten. Und das gilt insbesondere für die Tatsache, dass es Excel seit der Version 2010 auch in einer 64-Bit-Version zu kaufen gibt. Dass die nicht nur Vorteile hat, sondern auch massive Nachteile in Form von diversen Inkompatibilitäten, zeigt der Abschnitt 15.7 (und was Sie dagegen tun können, natürlich auch).

Excel 2013 präsentierte sich dem Anwender erstmals in einem nüchternen, von Schatten und Transparenzeffekten befreiten Look, der sich an der Optik von Windows 8 orientierte. Und dazu passend fand sich eine neuerlich aufgeräumte und entschlackte Menüband- und Backstage-Oberfläche, in der man so manchen Befehl aus früheren Versionen leider nicht mehr finden konnte.

Als Ausgleich gab es neue Funktionen wie Schnellanalyse und Empfohlene Diagramme, die die Erstellung von Diagrammen beschleunigten. Arbeitsmappen ließen sich standardmäßig „in der Cloud“ und somit online speichern, manche Diagramme in animierter Form anzeigen und Pivot-Tabellen auf der Basis mehrerer Listen beziehungsweise Tabellen generieren. Unter der Haube gab es die eine oder andere neue Tabellenfunktion zu entdecken, unter anderem für das direkte Anzapfen von Webdiensten (siehe Abschnitt 15.4).

Der wichtigste und aus Entwicklersicht interessanteste Neuzugang aber war die App für Office. Dabei handelte es sich um ein seinerzeit völlig neues Erweiterungskonzept, das Webtechniken an die Stelle von VBA-Makros setzen wollte (und weiterhin will). Wie (und ob) das funktioniert, ist detailliert in Kapitel 15.9 beschrieben.

Und was gibt es Neues in der jüngsten Excel-Version 2016? Aus Anwendersicht wären da wohl vor allem stark verbesserte Funktionen für die gemeinsame (Echtzeit-)Arbeit an Dokumenten zu nennen, die Anpassung an Windows 10 und Touch-Bedienung sowie die neue Hilfefunktion „Was möchten Sie tun?“, die den User ohne Umweg über wortreiche Schritt-für-Schritt-Anleitungen direkt zur gesuchten Funktion führt.

Aus der Sicht des Programmierers sind andere Neuerungen aber viel interessanter. So gibt es jetzt eine Reihe neuer Diagrammtypen wie Wasserfall-, Pareto- oder Treemap-Diagramme, die nicht nur visuell überzeugen, sondern sich auch noch programmatisch generieren und verändern lassen. Wie das funktioniert, haben wir in Kapitel 10.8 detailliert beschrieben.

Ein weiteres Highlight: Microsoft hat die Funktionalität des ehemaligen Power-Query-Add-ins nun vollständig in Excel (und dessen Objektmodell) integriert. Damit steht uns Entwicklern jetzt ebenfalls ein extrem mächtiges Tool zur Verfügung, mit dem sich Daten aus nahezu jeder Datenquelle auswählen, aufbereiten und in ein Excel-Arbeitsblatt importieren lassen. Kapitel 12.2.1 vermittelt Ihnen das dazu notwendige Know-how.

Natürlich hat es auch wieder die eine oder andere Änderung im Vergleich zu früheren Excel-Versionen gegeben ‒ was immer etwas Verwirrung stiftet. So heißen die frisch vorgestellten Apps für Office (alias Office-Apps) nun plötzlich Office-Add-ins, was dazu führt, dass wir es in Excel 2016 erstmals mit drei verschiedenen Arten von Add-ins zu tun haben, nämlich „Excel-Add-ins“ (siehe Kapitel 15.1), „COM-Add-ins“ (Kapitel 15.6 und 15.8) sowie besagte „Office-Add-ins“. Bei Letzteren hat es neben der neuen Namensgebung auch diverse Änderungen und Erweiterungen in Sachen Programmierung gegeben. Die Details finden Sie in Kapitel 15.9.

Warum dieses Buch?

Im Gegensatz zu anderen Titeln, die sich mit dem Thema Excel-Programmierung beschäftigen, liefert Ihnen dieses Buch keine systematische Beschreibung von Objekten, ihren Eigenschaften und Methoden oder VBA-Befehlen. Wer so etwas sucht, ist mit der Hilfefunktion des VBA-Editors und mit zahlreichen Internetquellen besser bedient.

Anstelle einer umfassenden Referenz stehen bei diesem Buch praktische Lösungen und Anwendungsmöglichkeiten im Vordergrund. Die zugehörigen Code-Beispiele lassen sich relativ leicht an eigene Bedürfnisse anpassen, was die Entwicklungszeit für manches berufliche oder private Programmiervorhaben spürbar verkürzen kann.

Dass man bei praxisbezogenen Projekten natürlich auch sehr viel über Objekte (die wichtigsten sogar!), vor allem aber über sinnvolle Formen ihres programmierten Zusammenarbeitens erfährt, ist quasi ein Nebeneffekt. Gleichzeitig nennen wir aber auch die Probleme Excels beim Namen, um Ihnen die langwierige Suche nach Fehlern zu ersparen, die Sie gar nicht selbst verursacht haben.

Neben konkreten Programmierlösungen liefert Ihnen dieses Buch aber auch sehr viel Insider-Wissen über die Bedienung von Excel. Damit werden Sie so ganz nebenbei zum „Power-User“ und können so manches Anwendungsproblem mit ein paar Mausklicks lösen, für das Sie ansonsten womöglich ein Programm geschrieben hätten …;-)

Jenseits von VBA

Obwohl VBA immer noch das wichtigste Werkzeug für die Entwicklung von Excel-Lösungen ist (und daher im Mittelpunkt dieses Buchs steht), stellen sich zunehmend mehr Aufgaben, die mit der „eingebauten“ Programmiersprache des Kalkulationsprogramms nur noch teilweise oder gar nicht mehr zu lösen sind. Beispiele sind etwa die Anpassung von Menüband (siehe Abschnitt 8.2.2) und Backstage-Ansicht (8.5.1), die Programmierung individueller Aufgabenbereiche (15.8.4.1), die Abfrage von Web Services (15.4) oder die Integration von Webtechniken in Form der neuen Office-Add-ins (15.9).

Damit Sie solche Aufgaben dennoch meistern können, stellt Ihnen dieses Buch die erforderlichen Werkzeuge vor und liefert Ihnen das notwendige Know-how für den erfolgreichen Einsatz. Das erspart Ihnen mühsame Recherchen im Internet, den Kauf weiterer Bücher und lässt Sie mitunter auch kleine programmiertechnische „Wunder“ vollbringen ‒ die Wiederbelebung der mit Excel 2003 „entschlafenen“ Menüs und Symbolleisten (siehe Abschnitt 8.2.5) beispielsweise. Darüber dürften sich insbesondere altgediente Excel-Anwender freuen, die sich selbst in der nunmehr vierten Ribbon-Version von Excel noch immer nicht im Menüband zurechtfinden.

Tipp

Die Datei KlassikMenü.xlam im Unterordner 8 der Beispieldateien enthält eine vollständige Nachbildung der Menü- und Symbolleiste von Excel 2003. Sie können diese Datei als sofort nutzbares Add-in in Excel ab Version 2007 einbinden. Abschnitt 8.2.6 verrät, wie Sie dazu vorgehen müssen.

Viel Erfolg!

Die Beispiele dieses Buchs zeigen, wie weit Excel-Programmierung gehen kann. Die Möglichkeiten sind beinahe unbegrenzt! Wer sie nutzen will, muss sich aber nicht mehr nur im komplexen Objektmodell von Excel und in VBA zurechtfinden, sondern zunehmend auch in angrenzenden Programmierwelten.

Dabei will Ihnen dieses Buch eine praktische Orientierungshilfe sein. Mit zunehmender Übersicht und Erfahrung beginnt dann die Office-Programmierung mit VBA, Visual Studio, XML, JavaScript und diversen anderen Werkzeugen richtig Spaß zu machen.

Und wenn das der Fall ist, lässt auch der gewünschte Erfolg nicht lange auf sich warten. Genau den wünschen wir Ihnen von Herzen!

Michael Kofler und Ralf Nebelo, März 2016

http://www.kofler.info

Konzeption des Buchs

Visual Basic für Applikationen (oder kurz: VBA) ist eine sehr leistungsfähige Programmiersprache. Die große Zahl von Schlüsselwörtern bringt aber auch viele Probleme mit sich. Während des Einstiegs ist es so gut wie unmöglich, auch nur halbwegs einen Überblick über VBA zu gewinnen. Und selbst nach monatelanger Programmierung mit VBA wird die Hilfe der wichtigste Ratgeber zu den Details eines bestimmten Schlüsselworts bleiben. Dieses Buch versucht deswegen ganz bewusst, das zu bieten, was in der Originaldokumentation bzw. in der Hilfe zu kurz kommt:

Darüber hinaus liefert Ihnen dieses Buch sehr viel Know-how für fortgeschrittene Programmierthemen, bei denen VBA nicht unbedingt im Mittelpunkt steht:

Einem Anspruch wird das Buch aber ganz bewusst nicht gerecht: dem der Vollständigkeit. Es erscheint uns sinnlos, Hunderte von Seiten mit einer Referenz aller Schlüsselwörter zu füllen, wenn Sie beinahe dieselben Informationen auch in der Hilfe finden können. Anstatt zu versuchen, auch nur den Anschein der Vollständigkeit zu vermitteln, haben wir uns bemüht, wichtigeren Themen den Vorrang zu geben und diese ausführlich, fundiert und praxisorientiert zu behandeln.

Formalitäten

Die Namen von Menüs, Befehlsregisterkarten, Symbolen, Buttons und anderer Dialog- und Oberflächenelemente werden in Kapitälchen dargestellt: Datei|Öffnen, Abbruch oder OK. Die Anweisung Überprüfen|Blatt schützen|Zellen formatieren meint, dass Sie zuerst die Befehlsregisterkarte Überprüfen öffnen, den Befehl Blatt schützen anklicken und im daraufhin erscheinenden Dialog das Kontrollkästchen Zellen formatieren auswählen sollen.

VBA-Schlüsselwörter, Variablen- und Prozedurnamen sowie Datei- und Verzeichnisnamen werden kursiv angegeben, etwa Application-Objekt, Visible-Eigenschaft, strName-Variable oder C:\Muster.xlsm. Tabellenfunktionen wie WENN() erscheinen in der gleichen Schrift, aber in Großbuchstaben. (Tabellenfunktionen sind auch anhand der Sprache von VBA-Schlüsselwörtern zu unterscheiden: VBA-Schlüsselwörter sind grundsätzlich englisch, Tabellenfunktionsnamen immer deutsch.)

Beispielcode, Beispieldateien, Download-Dateien zum Buch

Aus Platzgründen sind in diesem Buch immer nur die wichtigsten Code-Passagen der Beispielprogramme abgedruckt. Den vollständigen Code finden Sie unter Download-Dateien zum Buch, die Sie unter der folgenden Internetadresse herunterladen können:

http://downloads.hanser.de/

Die Beispieldateien sind in Verzeichnissen angeordnet, deren Namen den Kapitelnummern entsprechen. VBA-Code in diesem Buch beginnt immer mit einem Kommentar im Format Verzeichnis\Dateiname, der auf die entsprechende Beispieldatei verweist:

' 01\format.xlsm Sub FormatAsResult() Selection.Style = "result" End Sub

Im Fall von XML-Code (den Sie hauptsächlich in Kapitel 8 finden) haben die Kommentare die folgende Form:

<!-- 08\Menüband_Button.xlsm -->

Kommentare in JavaScript-Dateien (Kapitel 15.9) schließlich sehen so aus:

/* 15\OfficeApps\SimpleApp\ComplexApp.js */

Internetadressen (Hyperlinks.pdf)

Der Text dieses Buchs enthält zahlreiche Verweise auf Internetadressen, wo Sie weiterführende Informationen finden, Tools herunterladen können etc. Da viele dieser „Links“ zu kompliziert sind, um sie abzutippen, haben wir sie in einem PDF-Dokument zusammengefasst. Es trägt den Namen Hyperlinks.pdf (siehe nächste Seite) und ist ebenfalls bei den Download-Dateien zum Buch im Ordner Info zu finden.

Die Links in diesem Dokument sind jeweils mit einer Nummer gekennzeichnet, die Sie auch im Buchtext in der Form [Link x] finden, wobei „x“ für die konkrete Link-Nummer steht. Zum Öffnen eines Links genügt ein Mausklick. Beim ersten Mal müssen Sie Ihrem Reader-Programm unter Umständen die Erlaubnis dazu erteilen.

Die Internetadressen in der Datei Hyperlinks.pdf können Sie direkt per Mausklick öffnen.

Und eine Entschuldigung

Wir sind uns bewusst, dass unter den Lesern dieses Buchs auch zahlreiche Frauen sind. Dennoch ist in diesem Buch immer wieder von dem Anwender die Rede, wenn wir keine geschlechtsneutrale Formulierung gefunden haben. Wir bitten dafür alle Leserinnen ausdrücklich um Entschuldigung. Wir sind uns des Problems bewusst, empfinden Doppelgleisigkeiten der Form der/die Anwender/in oder kurz AnwenderIn aber sprachlich als nicht schön ‒ und zwar sowohl beim Schreiben als auch beim Lesen.

TEIL I: Intuitiver Einstieg
1 Das erste Makro