Seminarvortrag Maik Bürschgens 13.12.2011 Einführung in die Programmiersprache Visual Basic for Applications… AGENDA 1. 2. 3. 4. 5. 6. 7. 8. Vorwort Allgemeine Informationen zu VBA VBA im Zusammenspiel mit Excel Zusätzliche Funktionalitäten von VBA Weitergehende Informationen Fazit und Schlusswort Literatur Anhang Einstieg in Visual Basic for Applications und die Office Programmierung 2 AGENDA 1. 2. 3. 4. 5. 6. 7. 8. Vorwort a) Ziel des Vortrags b) Warum Excel als Demonstrationsprogramm? c) Wichtige Hinweise zur weiteren Verlauf der Präsentation Allgemeine Informationen zu VBA VBA im Zusammenspiel mit Excel Zusätzliche Funktionalitäten von VBA Weitergehende Informationen Fazit und Schlusswort Literatur Anhang Einstieg in Visual Basic for Applications und die Office Programmierung 3 Vorwort - Ziel des Vortrags 4 Einblick in die Fähigkeiten der Programmiersprache „Visual Basic for Applications“ Einstieg in die damit verbundene Office Programmierung Desweiteren: • Vorurteilen gegenüber VBA vorbeugen • Motivation mitgeben, VBA zu erlernen und einzusetzen 4 Ausgerechnet Excel als Demonstrationsprogramm? 5 VBA Programme können nicht direkt ausgeführt werden • abhängig von einer Wirtsanwendung • Zugriff auf die Skripte über eine Programmierschnittstelle (IDE) im weiteren Verlauf: Excel 2007 • weitreichende Anwendungsgebiete • bekannt und häufig eingesetzt • tiefgreifenden Gebrauch einer Office Anwendung kennenlernen • Ausführungen lassen sich allgemein auf die Office Programmierung übertragen 5 AGENDA 1. Vorwort 2. Allgemeine Informationen zu VBA a) Ursprung und Einsatzgebiete b) Spracheigenschaften 3. VBA im Zusammenspiel mit Excel 4. Zusätzliche Funktionalitäten von VBA 5. Weitergehende Informationen 6. Fazit und Schlusswort 7. Literatur 8. Anhang Einstieg in Visual Basic for Applications und die Office Programmierung 6 Allgemeine Infos - Ursprung und Einsatzgebiete 7 Von Microsoft entwickelt Seit Mitte der 1990er Jahre verwendet aus dem BASIC Dialekt Visual Basic entstanden zur Steuerung von Abläufen innerhalb der Office Programme konzipiert • Excel, Outlook, Visio,… „Microsoft Visual Basic for Applications licensing program“ • in Produkten der Corel Corporation z.B. CorelDraw zu finden • MindManager, AutoCAD,… 7 Spracheigenschaften 8 Leistungsfähige Skriptsprache Syntax stark an die von Visual Basic angelehnt für die modulare Programmierung konzipiert • zu lösendes Problem wird in einzelne Module aufgeteilt, die jeweils eine genaue Schnittstellenspezifikation aufweisen (Def.: Handbuch Programmiersprachen) • Skripte (Makros) in kleinere Bestandteile zerlegt, die übersichtlich und einfach zu warten sind 8 Spracheigenschaften 9 Ursprünglich als prozedurale Programmiersprache entwickelt… • Quellcode in kleine Einheiten unterteilt, die sich gegenseitig aufrufen können realisiert durch Prozeduren und Funktionen • Erhielt mit der Zeit objektorientierte Aspekte • Klassen und Objekte können syntaktisch dargestellt und implementiert werden • Datenkapselung • Keine direkten Speicherzugriffe wie z.B. in C/C++ möglich (Zeiger) • Schnittstellenvererbung Aber: keine Implementierungsvererbung(!) 9 AGENDA 1. Vorwort 2. Allgemeine Informationen zu VBA 3. VBA im Zusammenspiel mit Excel a) Vorteile von VBA b) Vorstellung eines Anwendungsfalls – „Joggoh!“ c) Grundlegende Excel Objekte und Aktionen d) Ereignis(-prozeduren) e) Dialoge und Formulare zur Interaktion mit dem Benutzer 4. Zusätzliche Funktionalitäten von VBA 5. Weitergehende Informationen 6. Fazit und Schlusswort 7. Literatur 8. Anhang Einstieg in Visual Basic for Applications und die Office Programmierung 10 VBA im Zusammenspiel mit Excel – Warum VBA? 11 Theoretisch leistbar, viele Aufgaben manuell mit Excel Funktionen zu lösen… ABER! • Excel Anwendung relativ einfach an die eigenen Bedürfnisse anpassen Durch zusätzliche Funktionalitäten erweitern zur Vermeidung von Fehlbedienungen einschränken • Die von Excel benötigten Fähigkeiten optimal einsetzen • Benutzerdefinierte Abläufe und Lösungen festlegen… • …und im Hintergrund automatisieren! • Deutliche Zeiteinsparung und saubere Lösungen! 11 Vorstellung eines Anwendungsfalls 12 „Joggoh!“ – die etwas sportlichere Datenbank Ermöglicht die Verwaltung sportlicher Aktivitäten im Ausdauerbereich • Jogging, Walking, Wandern, Fahrradfahren, Cross Trainer,… • Upgrade für Krafttraining ist in Arbeit 12 Ein Anwendungsfall – (Vor-)Formatierung einer Kategorie 13 13 Ein Anwendungsfall– (Vor-)Formatierung einer Kategorie 14 Blau: Fehlerbehandlung • GoTo wird dafür in VBA noch frequentiert verwendet Schwarz: Funktionskörper • Hier sogar eine Ereignisprozedur • Wird aufgerufen, sobald eine neue Kategorie in Joggoh erzeugt wird • Kategorien entsprechen Tabellen in Excel Braun: Beispiele für einfache VBA Funktionen aus dem Sprachkern Rot: Zellformatierung • Beispiel für die Interaktion mit Excel Objekten 14 Dialoge und Formulare 18 dienen zur Interaktion mit dem Benutzer sollen zu einer komfortablen und deutlichen Benutzerführung verhelfen Dialogformen: • Integrierte Dialogfelder • Tabellenblätter als Formulare • Benutzerdefinierte Dialoge („UserForms“) 15 Dialoge und Formulare - integrierte Dialogfelder 19 Integrierte Dialogfelder: • bereits für spezielle Aufgaben präpariert und konzipiert • Message Box • Input Box • Speichern unter… Dialog [als Repräsentant für weitere Dialogformen] 16 Dialoge und Formulare - Das Tabellenblatt als Formular 20 Positionierung von Steuerelementen in Tabellenblättern ermöglicht die Umgestaltung zu Formularen 17 Dialoge und Formulare – User Forms 21 Integrierte Dialoge reichen oftmals nicht aus „UserForms“ (benutzerdefinierte Dialoge) können auf die Bedürfnisse der Anwendung abgestimmt werden – VBA erweist sich hier als vielseitig Integrierte Ereignisse dienen als Grundlage von Ablaufsteuerungen Im VBA Editor mühelos zu gestalten • Einfügen UserForm • Mit Drag&Drop angebotene Steuerelemente platzieren • Das Eigenschaftenfenster zur Manipulation von Attributen nutzen • Mit Rechtsklick Code anzeigen zum Codefenster gelangen • Wird eingeblendet mit der Anweisung [UserFormName].Show() 18 User Forms 22 Ein Auszug wichtiger Ereignisse, Attribute und Methoden Anweisung UserForm_Initialize() Beschreibung Ereignis, Bietet die Möglichkeit beim Erzeugen des Dialoges den Komponenten Standardwerte zuzuordnen. [Komponente]_Clicked() Ereignis, Einfacher Mausklick [Komponente]_DblClick() Ereignis, Doppelklick [Liste].AddItem() Fügt ein weiteres Auswahlelement der Liste / ComboBox hinzu [Liste].Clear() Löscht die Auswahlliste / ComboBox [Liste].RemoveItem() Entfernt ein Auswahlelement aus der Liste / ComboBox [Liste].Value Aktueller Wert einer Liste / ComboBox [Liste].ListCount Anzahl der Einträge einer Liste / ComboBox 19 User Forms 23 Der benutzerdefinierte Dialog zur Editierung bestehender Daten in der Joggoh! – Datenbank [Auszüge vom Programmcode] 20 User Forms 24 Der benutzerdefinierte Dialog zur Editierung bestehender Daten in der Joggoh! – Datenbank [Gestaltung nach dem Aufruf] 21 AGENDA 1. 2. 3. 4. 5. 6. 7. 8. Vorwort Allgemeine Informationen zu VBA VBA im Zusammenspiel mit Excel Zusätzliche Funktionalitäten von VBA a) I/O Operationen b) Interaktion mit Datenbanken c) Präsentation der Daten: Diagramme Weitergehende Informationen Fazit und Schlusswort Literatur Anhang Einstieg in Visual Basic for Applications und die Office Programmierung 22 Weitere Funktionalitäten von VBA 26 Bisher vorgestellte Möglichkeiten reichen für fortgeschrittene Office Programmierung aus Probleme bei tiefgreifenden Anwendungen, wenn man beispielsweise… • Mehrere Datensätze aus einer Datenbank gleichzeitig auslesen • Diese automatisch in eine Excel Tabelle hinterlegen • Daten visualisieren und grafisch präsentieren möchte! Lösung: • Befehlssatz zur Kommunikation mit externen Programmen und Datenquellen • Befehlssatz, um dynamisch Grafiken zu erzeugen und zu verwalten 23 Weitere Funktionalitäten von VBA - I/O Operationen 27 Recht einfach gestaltet Wenige Grundoperationen, die schon ausreichen: • Datensätze aus Textdateien auslesen • Datensätze in Textdateien exportieren • Allgemeine Dateioperationen Suchen Kopieren Löschen Dateigröße … 24 I/O Operationen 28 Beispiel: Export eines Datensatzes aus Joggoh! in eine CSV Datei I/O Operationen 29 Beispiel: Import eines Datensatzes aus einer CSV-Datei nach Joggoh! 26 I/O Operationen 31 Weitere Dateioperationen Methode Beschreibung der Funktionalität Dir ( [Pfad] & [Suchmuster] ) Dient zur Suche von Dateien. Es können auch Platzhalter (*) verwendet werden. Als Rückgabewert erhält man den ermittelten Pfad oder einen Leerstring. FileDateTime ( [Pfad] ) Liefert Datum und Uhrzeit der letzten Änderung der Datei FileLen ( [Pfad] ) Liefert die Dateigröße GetAttr ( [Pfad] And Konstante) Dient zur Ermittlung von Datei- und Verzeichnisattributen. [vbHidden, vbSystem, vbDirectory und vbArchive] FileCopy( [PfadAlt], [PfadNeu]) Kopiert angegebene Datei an den übergebenen Zielort Name ( [Alt], [Neu]) Benennt eine Datei um Kill ( [Pfad]) Löscht eine Datei. Die Aktion kann nicht rückgängig gemacht werden. 27 Weitere Funktionalitäten von VBA - SQL Operationen 32 Datenbanken gewährleisten eine persistente Datenhaltung Excel als Tabellenkalkulationsprogramm… • Dient bei im Alltag häufig als „Datenbankersatz“ / Übersichtsprogramm • Reicht bei größeren Datenmengen dafür nicht mehr aus • Muss deswegen häufiger mit Datenbanken kommunizieren VBA… • Weist einen Befehlssatz für das Absetzen von SQL Befehlen auf • Besitzt Methoden und Objekte zur Verarbeitung der Resultate • Kann die Interaktion mit Datenbanken [im Hintergrund] automatisieren 28 SQL Operationen 33 Beispiel: Import von Datensätzen aus einer Access-Datenbank [Prozedurauszug] 29 Weitere Funktionalitäten von VBA - Präsentation der Daten 35 VBA bietet Möglichkeiten… • Diagramme und eingebettete Diagramme zu erstellen • Ihre Eigenschaften zu manipulieren Beschriftungen, Typ, Form und Farbe … • Sie zu verwalten Kopieren, Einfügen oder Export als PNG-Datei VBA unterscheidet… • Diagrammblätter in einem separaten Blatt generiert und verwaltet • Eingebettete Diagramme in ein bereits bestehendes Tabellenblatt integriert 30 Diagramme 36 Präsentation von Distanz (m) und zugehöriger Zeit (s) einer Kategorie aus Joggoh! in einem Diagrammblatt [Prozedurauszug!] Diagramme 40 Delete: Löscht das ausgewählte Diagramm Copy (After/Before): Kopie eines Diagrammblatts • keine Angabe: Kopie in eine frisch angelegten Arbeitsmappe Copy: Kopie eines eingebetteten Diagramms in die Zwischenablage • Paste: Einfügen des eingebetteten Diagramms Export (Destination): Export des ausgewählten Diagramms • PNG-Datei 32 AGENDA 1. 2. 3. 4. 5. Vorwort Allgemeine Informationen zu VBA VBA im Zusammenspiel mit Excel Zusätzliche Funktionalitäten von VBA Weitergehende Informationen a) Der Makro Rekorder 6. Fazit und Schlusswort 7. Literatur 8. Anhang Einstieg in Visual Basic for Applications und die Office Programmierung 33 Der Makro Rekorder 42 Zeichnet diverse Aktionen, z.B. die Auswahl einer speziellen Zelle, auf Übersetzt die Aktionen automatisch in VBA Code Speichert den Code in einem Modul ab Bietet Anfängern die Möglichkeit in die Office Programmierung einzusteigen Erspart dem Professionellen Entwickler viel Zeit bei der Implementierung „trivialer“ Aufgaben Mehr Zeit und Konzentration für die schweren bzw. zeitintensiven Aufgaben Unter Entwicklertools Makro aufzeichnen zu finden 34 Fazit und Schlusswort 43 VBA Befehlssatz ist sehr weit gefächert • Sprachkern mit weitreichenden Funktionen • I/O Operationen ( Textdateien, Datenbanken,…) • Präsentation der Daten • Manipulation von Zellen / Zellbereichen •… Es lassen sich viele Abläufe… • Im Hintergrund automatisieren • Vereinfachen 35 Fazit und Schlusswort 44 Viele Tutorials und Bücher zu diesem Thema Foren runden das Angebot ab Erfahrungen in einer Programmiersprache beruhen weniger auf Theorie als auf Praxis Übung macht den Meister! 36 Fragen? 45 Vielen Dank für ihre Aufmerksamkeit! 37 Literatur 46 Einstieg in VBA mit Excel, Thomas Theis Galileo Computing, 2te und aktualisierte Auflage 2010 ftp://ftp.fernuni-hagen.de/pub/pdf/urz-broschueren/broschueren/b012.pdf Handbuch Programmiersprachen (Softwareentwicklung zum Lernen und Nachschlagen) Peter A. Henning und Holger Vogelsang, Hanser Verlag, 2007 http://www.online-excel.de/excel/singsel_vba.php?f=50 http://www.office-loesung.de/ http://msdn.microsoft.com/de-de/isv/bb190538.aspx 38 Literatur 47 http://de.wikipedia.org/wiki/Visual_Basic_for_Applications http://de.wikipedia.org/wiki/Tabellenkalkulation http://de.wikipedia.org/wiki/Microsoft_Excel http://de.wikibooks.org/wiki/VBA_in_Excel_-_Grundlagen http://www.vba-beispiele.de/office.php?act=excel&cat=vbaereignisse http://www.activevb.de/tutorials/tut_vbatutorial/tut_vbatutorial.html 39 AGENDA 1. 2. 3. 4. 5. 6. 7. 8. Vorwort Allgemeine Informationen zu VBA VBA im Zusammenspiel mit Excel Zusätzliche Funktionalitäten von VBA Weitergehende Informationen Fazit und Schlusswort Literatur Anhang a. Sprachkonzept von VBA (Sprachkern) b. Excel als Tabellenkalkulationsprogramm c. Der VBA-Editor als Entwicklungsumgebung Einstieg in Visual Basic for Applications und die Office Programmierung 40 Syntaktischer Aufbau des Quellcodes 49 Ungewohnte Syntax … • Keine Semikolons, welche das Ende einer Anweisung markieren • Prinzipiell nur eine Anweisung pro Zeile erlaubt • Mehrzeilige Anweisungen durch das Einfügen von Leerzeichen und Unterstrich am Ende der Zeile möglich [„ _“] • Case insensitive • Keine Escape-Sequenzen zur Darstellung von Steuerzeichen integrierte Konstanten Datentypen 50 Datentyp Speicherbedarf Wertebereich und Bedeutung Boolean 2 Byte Wahrheitswert, kann den Wert „True“ oder „False“ annehmen Byte 1 Byte Ganze Zahl von 0 bis 255 Integer 2 Byte Ganze Zahl von -32.768 bis 32.767 Long 4 Byte Ganze Zahl von -2,1 * 10^9 bis 2,1 * 10^9 4 Byte Gleitkommazahl mit einfacher Genauigkeit von ca. -3,4 * 10^38 bis ca. -1,4* 10^(-45) für negative und von ca. 1,4*10^(-45) bis 3,4 * 10^38 für positive Werte Double 8 Byte Gleitkommazahl mit doppelter Genauigkeit von ca. 1,8*10^308 bis -4,9*10^(-324) für negative und von ca. 4,9*10^(-324) bis 1,8*10^308 für positive Werte Date 8 Byte Datumsangabe zwischen 1.Januar 100 und 31.Dezember 9999 Object 4 Byte Verweis auf ein Objekt String 10 Byte (+) Zeichenkette mit variabler Länge Variant 16 Byte (+) Datentyp nicht explizit festgelegt (universell) Single Operatoren und Variablen 51 Operatoren: Arithmetische Operatoren (+,-,…) Logische Operatoren(Not, And, Or,…) Vergleichsoperatoren (<,>,…) Verkettungsoperatoren (&, +) Variablen: • Deklaration und Initialisierung erfolgt zweistufig! Explizite/Implizite Deklaration möglich Auf Prozedurebene oder Modulebene möglich • Schüsselphrase „Dim [Name] As [Datentyp]“ Operatoren und Variablen 52 Konstanten: • Deklaration und Wertzuweisung in einem Schritt • Schlüsselwort „Const“ • öffentlich (public) oder modulbezogen (private) Integrierte Konstanten: • Systemdefinierte Konstanten mit spezieller Funktionalität Beispiel: vbCrLf Zeilenumbruch Beispiel: xlLine Diagrammtyp „Liniendiagramm“ Unterprogrammtechnik 53 Prozeduren: • kleinste selbstständige Einheiten eines Programms • beinhalten eine Gruppe von Anweisungen • kein Rückgabewert • Schlüsselphrase „Sub…End Sub“ Funktionen: • Können Werte zurückliefern • Schlüsselphrase „Function…End Function“ Unterprogrammtechnik 54 Parameterübergabe: • Als Kopie (Call-By-Value, Schlüsselwort „ByVal“) • Als Referenz (Call-By-Reference, „ByRef“, Standardeinstellung) • Optionale Parameter möglich („Optional“) Prozeduren sind öffentlich… • „Public“ …oder modulbezogen • „Private“ Klassen 55 Klassen in eigenen (Klassen-)Modulen erstellt • Enthalten nur Methoden und Attribute der Klasse • Aus z.B. Java oder C++ bekannte syntaktische Einleitungen wie „Class A {…}“ fallen weg • Deklaration mehrerer Klassen in einem Modul nicht möglich Setter und Getter mit der Schlüsselphrase „Property Let (bzw. Get)“ gekennzeichnet Deklaration und Initialisierung von Objekten ebenfalls zweistufig • Schlüsselphrase „Set [Name] = New [Klasse]“ Diverses 56 Desweiteren unterstützt VBA… • (mehrdimensionale / dynamische) Arrays • Benutzerdefinierte Datentypen (vgl. Structs aus C/C++, „type“) • Schleifenstrukturen • Kontrollstrukturen • Methoden zur Fehlerbehandlung („On Error“ Anweisung, GoTo) • Konvertierung und Manipulation von Daten, u.a. Datentypermittlung und Casts (Vartype, CInt, CString,…) Zeichenkettenmanipulation (InStr, LCase, Split,…) […] Der VBA Editor als Entwicklungsumgebung 57 Der VBA Editor als Entwicklungsumgebung 58 Eigenständiges Programm mit Fenstersystem und Symbolleisten Alt+F11 oder über den Reiter Entwicklertools Visual Basic zu erreichen Besteht aus mehreren Komponenten: Projektexplorer: • Überschau der aktuell verwendeten Module in Form einer Baumstruktur • Module als Container für bereits erstellten Programmcode Office Objekte Formulare Klassenmodule allgemeine Module Der VBA Editor als Entwicklungsumgebung 59 Eigenschaftenfenster: • Übersicht für die Eigenschaften (Attribute) des aktuell ausgewählten Moduls • erleichtert ihre Modifikation • wird im Bereich der Formulare frequentiert verwendet Direktfenster: • Zu Testzwecken oder Debugging genutzt • Akzeptiert direkte Eingaben (Funktionsaufrufe) • Debug.Print[text]: angegebener Text erscheint im Direktfenster Objektkatalog / IntelliSense: • Auflistung aller durch VBA nutzbaren / verfügbaren Objekte • Nachschlagewerk • Standardmäßig ausgeblendet • VBA Editor schlägt Eigenschaften und Methoden des aktuell selektierten Objekts automatisch vor: IntelliSense Excel als Tabellenkalkulationsprogramm 60 Von Microsoft entwickeltes Programm zur Tabellenkalkulation • Eine Software für die interaktive Eingabe und Verarbeitung von numerischen und alphanumerischen Daten in Tabellenform (Def.:Wikipedia) Teil des von Microsoft herausgegebenen Office Paketes Aktuelle Version: Excel 2010 (bzw. 2011 für Mac) sehr bekannt und weit verbreitet Excel als Tabellenkalkulationsprogramm 61 Fähigkeiten und Bestandteile • Bietet viele Möglichkeiten zur Datenkalkulation, -analyse und deren Präsentation Sortier-/Filtervorgänge unterstützen die Auswertung Diagramme und Grafiken Gezielter Einsatz von Formeln und Funktionen Import von Daten aus externen Datenquellen (CSV, XML, Datenbanken,…) VBA Schnittstelle zur Ausführung und Bearbeitung von VBA Makros Excel als Tabellenkalkulationsprogramm 62 Der Arbeitsbereich von Excel • Arbeitsmappen, welche Tabellenblätter beinhalten • Tabellenblätter bestehen aus Zellen, die Daten speichern können • Eindeutige Identifikation von Zellen: Angabe von Spalte (Buchstabe) und Zeile (Nummer) Zellbezugssystem • Oberer Bereich: Menüleiste mit zahlreichen Funktionen Excel als Tabellenkalkulationsprogramm 63