+ All Categories
Home > Documents > Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph...

Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph...

Date post: 05-Apr-2015
Category:
Upload: alrich-stolzenburg
View: 113 times
Download: 0 times
Share this document with a friend
Popular Tags:
73
Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007
Transcript
Page 1: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

Objektorientierung mit VBA

Visual Basic for Applications

Klassen und Objekte

Übungen

Christoph Oberweis 2007

Page 2: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

2

Agenda

VBA und Objekte Daten- u. Grundstrukturen in VBA Modelle und Modellbildung Klassen – Objekte - Beziehungen Übungen COM Quellen

C.O.

Page 3: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

3

Agenda

C.O.

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA und Objekte Daten- u. Grundstrukturen in VBA Modelle und Modellbildung Klassen – Objekte - Beziehungen Übungen COM Quellen

Page 4: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

4

VBA …

C.O.

… ist eine Programmiersprache

… ist in die Office-Anwendungen integriert

… erlaubt das Arbeiten mit Objekten

… kann als Schnittstelle zu Office, aber auch zuWindows - Ressourcen insgesamt benutzt werden

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 5: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

5

Wo versteckt sich VBA?

C.O.

Wechsel mit <Alt> <F11> von der Office Anwendung in das VBA – Programmiersystem

Zurück zur Office Anwendung: Hier klicken

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 6: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

6

Zunächst ein „warming up“

C.O.

1. Schritt: Excel aufrufen2. Schritt: Mit <Alt> <F11> in die Programmierumgebung wechseln3. Schritt: „Diese Arbeitsmappe“ anklicken (Das wird später anders gemacht!)4. Schritt: Falls jetzt schon Programmcode erscheint, diesen löschen5. Schritt: Obiges Programm eingeben6. Schritt: Mit <F5> Programm starten7. Schritt: Programm testen, gegebenenfalls korrigieren8. Schritt: Mit <Alt><F11> zurück zu Excel

1. Schritt: Excel aufrufen2. Schritt: Mit <Alt> <F11> in die Programmierumgebung wechseln3. Schritt: „Diese Arbeitsmappe“ anklicken (Das wird später anders gemacht!)4. Schritt: Falls jetzt schon Programmcode erscheint, diesen löschen5. Schritt: Obiges Programm eingeben6. Schritt: Mit <F5> Programm starten7. Schritt: Programm testen, gegebenenfalls korrigieren8. Schritt: Mit <Alt><F11> zurück zu Excel

Einfache Ausgabe - Anweisung

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 7: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

7

Weitere Möglichkeiten

C.O.

Auch hier kann das Programm gestartet werden: ein Klick genügt!

… und wenn es mal abgestürzt ist: hier klicken.

Und wer es ganz genau wissen will: F8 ist der Einzelschritt-Mode zum Debugen.

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 8: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

8

Objekte: Intuitiver Zugang in Word

C.O.

Hier klicken!

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 9: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

9

Überall Objekte!

C.O.

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 10: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

10

„Application“ ist der Boss!

C.O.

Drücke F1, und das Objekt verrät seine „Geheimnisse“

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 11: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

11

Was das Objekt so hat und kann

C.O.

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 12: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

12

Eigenschaften und Methoden

C.O.

Eigenschaft, hier:Benutzername

Ausgabe - Anweisung Punkt - Operator: Trennt den Objekt - Namen von der Eigenschaft oder der Methode

Methode, jetzt wird gedruckt (Drucker bitte einschalten)

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 13: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

13

Leichter Zugriff!

C.O.

Objekt_bezeichner.Methode_1

Objekt_bezeichner.Eigenschaft_1

Objekt_bezeichner.Methode_1

Objekt_bezeichner.Eigenschaft_1

Beachte die Ähnlichkeit hinsichtlich des Zugriff auf Record – Komponenten!

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 14: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

14

EXCEL - Objekte

C.O.

Mit Hilfe von VBA-Programmen können EXCEL –Tabellen-blätter, Arbeitsmappen, einzelne Zellen oder Zellbereiche verändert werden.

Wichtige Objekte:

Application (Das gesamte EXCEL-Fenster)

Workbook (eine Arbeitsmappe)

Worksheet (das einzelne Arbeitsblatt)

Range (Zellenbereich oder einzelne Zelle)

Wichtige Objekteigenschaften:

Caption (Beschriftung der Objekte)

Name

Selection (das markierte Objekt)

Value (Wert/Inhalt, z. B. einer Zelle)

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 15: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

15

Die „Quadratur“ mit VBA

C.O.

Wichtige Objektmethoden:

Select (Zelle auswählen)

Clear (löschen)

Cells (Zugriff auf spezielle Zellen, Cells erwartet eine Zeilen- und Spaltenindex)

Close (Applications - Objekt oder Arbeitsmappe schließen)

Option ExplicitSub quadate()Dim x As IntegerDim i As Integerx = 1i = -5Workbooks("Mappe1").Worksheets("Tabelle1").SelectDo While i < 6 Cells(x, 1).Select ActiveCell.Value = i Cells(x, 2).Select ActiveCell.Value = i * i x = x + 1 i = i + 1LoopEnd Sub

Option ExplicitSub quadate()Dim x As IntegerDim i As Integerx = 1i = -5Workbooks("Mappe1").Worksheets("Tabelle1").SelectDo While i < 6 Cells(x, 1).Select ActiveCell.Value = i Cells(x, 2).Select ActiveCell.Value = i * i x = x + 1 i = i + 1LoopEnd Sub

Schleifenprogrammierung, Füllen einer EXCEL-Tabelle:

quadratex := 1, i := -5

Tabelle1 auswählen

Solange i < 6

Zelle auswählen

i in Zelle übertragen

Nachbarzelle auswählen

i * i in Zelle übertragen

Spaltenzähler (=x) und i erhöhen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 16: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

16

Deklaration von Variablen

C.O.

Option Explicit

Dim net As Double

Dim x As Integer

Deklaration ist zwingend (kann abgestellt werden)

Deklaration zweier Variablen mit Typenangabe

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 17: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

17C.O.

Arrays

Sub selsort()

Dim Z(10) As Integer

Dim I As Integer

Dim K As Integer

Dim H As Integer

…………

Z(I) = InputBox("Wert: ", I)

…………

Sub selsort()

Dim Z(10) As Integer

Dim I As Integer

Dim K As Integer

Dim H As Integer

…………

Z(I) = InputBox("Wert: ", I)

…………

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 18: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

18C.O.

Verbund - Variablen

Option Explicit

Type record_1

Anum As Integer

Abez As String

Apreis As Double

End Type

Sub datensatz()

Dim Artikelsatz As record_1

Artikelsatz.Anum = InputBox("Artikelnummer: ")

Option Explicit

Type record_1

Anum As Integer

Abez As String

Apreis As Double

End Type

Sub datensatz()

Dim Artikelsatz As record_1

Artikelsatz.Anum = InputBox("Artikelnummer: ")

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 19: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

19

Files

C.O.

Open "Artikeldatei" For Output As #1

 ……Write #1, Artikeltabelle(I).A_nummer, Artikeltabelle(I).A_bezeichnung, Artikeltabelle(I).A_preis

Open "Artikeldatei" For Output As #1

 ……Write #1, Artikeltabelle(I).A_nummer, Artikeltabelle(I).A_bezeichnung, Artikeltabelle(I).A_preis

Open "Artikeldatei" For Input As #1

 ……Input #1, Artikeltabelle(I).A_nummer, Artikeltabelle(I).A_bezeichnung, Artikeltabelle(I).A_preis

Open "Artikeldatei" For Input As #1

 ……Input #1, Artikeltabelle(I).A_nummer, Artikeltabelle(I).A_bezeichnung, Artikeltabelle(I).A_preis

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 20: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

20

Abfragen

C.O.

Option Explicit

 

Sub rabatt_1()

Dim net As Double

Dim brut As Double

Const rab = 3

Const mwst = 19

 

net = InputBox("Nettobetrag: ")

If net > 99.99 Then net = net - (net * rab / 100)

brut = ((net * mwst) / 100) + net

MsgBox ("Rechnungsbetrag BRUTTO " & brut)

 

End Sub

Option Explicit

 

Sub rabatt_1()

Dim net As Double

Dim brut As Double

Const rab = 3

Const mwst = 19

 

net = InputBox("Nettobetrag: ")

If net > 99.99 Then net = net - (net * rab / 100)

brut = ((net * mwst) / 100) + net

MsgBox ("Rechnungsbetrag BRUTTO " & brut)

 

End Sub

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 21: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

21

If … Else

C.O.

If jahre > 5 Then

rueck = beitrag_j * 0.09

Else

rueck = beitrag_j * 0.04

End If

If jahre > 5 Then

rueck = beitrag_j * 0.09

Else

rueck = beitrag_j * 0.04

End If

Hinweis: Zeilengliederung muss so sein!

Ansonsten bei Fortsetzungszeile: In der vorhergehenden Zeile das Zeichen ´_´!

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 22: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

22

Schleifen

C.O.

Option Explicit

Sub durchschnitt_1() Dim tage As Integer Dim anzahl As Double Dim summe As Double Dim schnitt Dim z As Integer tage = InputBox("Anzahl Tage: ") z = 1 summe = 0

Do While z <= tage

anzahl = InputBox("Anzahl Besucher: ", anzahl)

summe = anzahl + summe

z = z + 1

Loop

schnitt = summe / tage MsgBox ("Durchschnitt: " & schnitt)End Sub

Option Explicit

Sub durchschnitt_1() Dim tage As Integer Dim anzahl As Double Dim summe As Double Dim schnitt Dim z As Integer tage = InputBox("Anzahl Tage: ") z = 1 summe = 0

Do While z <= tage

anzahl = InputBox("Anzahl Besucher: ", anzahl)

summe = anzahl + summe

z = z + 1

Loop

schnitt = summe / tage MsgBox ("Durchschnitt: " & schnitt)End Sub

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 23: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

23

For - Schleife

C.O.

For i = 1 To j z = (k * p) / 100 t = r - z k = k - t aus = aus & Format(i, "00 ") & Format(z, "0000000.00 ") _ & Format(t, "0000000.00 ") & Format(k, "0000000.00") & vbCrLf Next i

For i = 1 To j z = (k * p) / 100 t = r - z k = k - t aus = aus & Format(i, "00 ") & Format(z, "0000000.00 ") _ & Format(t, "0000000.00 ") & Format(k, "0000000.00") & vbCrLf Next i

Formatierung numerischer Werte (vgl. Prg.: Tilgungsplan)

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 24: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

24

Modelle und Modellierung

C.O.

Wirkliche Welt: Autohaus

Modell: Idealisierte Darstellung (Abbildung) der realen Welt zur Veranschaulichung bestimmter Sachverhalte/Eigenschaften/Prozesse, Vereinfachung der Realität

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 25: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

25

Diesen da ...

C.O.

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 26: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

26

C.O.

... picken wir uns mal raus…

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 27: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

27

C.O.

…und untersuchen ihn genauer!

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 28: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

28

„Objektive“ Tatsachen!

C.O.

Kfz

Hersteller= „Daihatsu“Typ= „Terios“………Hubraum= 1495………Farbe= „metallic silber“…….VKPreis= 17800,00

„konkretes“ individuelles Fahrzeug „abstrakte“ Darstellung

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Beachte: Zu jedem Fahrzeug gehört eine Herstellerangabe eine Typenangabe usw. (Gemeinsamkeit); diese Attribute haben je nach Kfz einen unterschiedlichen Inhalt.

Page 29: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

29

Produktion am Fließband

C.O.

Schablone, nach diesem „Bauplan“ können (fast) unendlich viele Fahrzeuge gebaut werden. Allerdings benötigt dieser Plan exakte Angaben zu den Details des Fahrzeugs.

Schablone, nach diesem „Bauplan“ können (fast) unendlich viele Fahrzeuge gebaut werden. Allerdings benötigt dieser Plan exakte Angaben zu den Details des Fahrzeugs.

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 30: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

30

Produktion am Fließband

C.O.

Schablone, nach diesem „Bauplan“ können (fast) unendlich viele Fahrzeuge gebaut werden. Allerdings benötigt dieser Plan exakte Angaben zu den Details des Fahrzeugs.

Schablone, nach diesem „Bauplan“ können (fast) unendlich viele Fahrzeuge gebaut werden. Allerdings benötigt dieser Plan exakte Angaben zu den Details des Fahrzeugs.

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Kfz

Hersteller: TextTyp: Text………Hubraum: Ganzzahl………Farbe: Text…….

So könnte der Bauplan formuliert sein: Attribute: Variablen mit Typenangabe als Informationen zu den Eigenschaften des Fahrzeugs (Vorstufe einer Klasse).

So könnte der Bauplan formuliert sein: Attribute: Variablen mit Typenangabe als Informationen zu den Eigenschaften des Fahrzeugs (Vorstufe einer Klasse).

Page 31: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

31

Klasse: Fertig!

C.O.

Kfz

Hersteller: TextTyp: Text………Hubraum: Ganzzahl………Farbe: Text…….VKPreis: Währung

Erfassung()Ändern()Löschen()Drucken()……………

Klassenname

Attribute

Methoden

Notation in UML (Unified Modeling Language)

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 32: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

32

Von der Klasse …

C.O.

Kfz

Hersteller: TextTyp: Text………Hubraum: Ganzzahl………Farbe: Text…….VKPreis: Währung

Erfassung()Ändern()Löschen()Drucken()……………

„Abstrakter“ Bauplan

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 33: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

33

... zum Objekt

C.O.

:Kfz

Hersteller= „Daihatsu“Typ= „Terios“………Hubraum= 1495………Farbe= „metallic silber“…….VKPreis= 17800,00

Erfassung()Ändern()Löschen()Drucken()……………

„Konkretes“ individuelles Fahrzeug

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 34: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

34

Die erste eigene Klasse

C.O.

Die Klasse besitzt drei Attribute und zwei Methoden. Damit lässt sich in der Realität selbstverständlich kein Fahrzeug hinreichend modellieren – es geht jetzt zunächst darum, die Klasse und ein dazu passendes Testprogramm in VBA zu implementieren.

Die Klasse besitzt drei Attribute und zwei Methoden. Damit lässt sich in der Realität selbstverständlich kein Fahrzeug hinreichend modellieren – es geht jetzt zunächst darum, die Klasse und ein dazu passendes Testprogramm in VBA zu implementieren.

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 35: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

35

Klasse erfassen

C.O.

Hier den Menüpunkt „Klassenmodul“ anwählen …

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 36: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

36C.O.

… und die neue Klasse anlegen.

Klasse erfassen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 37: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

37C.O.

Klasse erfassen

Doppelklick auf „Klasse“...

... und Name ändern (Kfz)!

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 38: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

38C.O.

Klasse erfassen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 39: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

39C.O.

Klasse: Erläuterungen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 40: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

40C.O.

Private Hersteller

Das Attribut „Hersteller“ darf nur von „Verarbei-tungsschritten“ der eigenen Klasse manipuliert wer-den (Kapselung). Das Gegenstück wäre „Public“, wenn die Attribute allerdings dann „von überall“ verändert werden können, ist das Einrichten einer Klasse eigentlich unsinnig.

Sub erfassen(her, ty, hub)

Sub kennzeichnet eine Methode der Klasse, in den Klammern stehen Platzhalter (Variablen) für die Daten, die von außen (vom Testprogramm) dem Objekt übermittelt werden. Die Verarbeitungs-schritte stehen zwischen Sub und End Sub.

Hersteller = her

Das Attribut „Hersteller“ erhält den Wert, der in Her von außen an das Attribut übermittelt wurde.

Function ErmittleTyp()

 Der im Objekt gespeicherte Wert für den Autotyp soll an das Testprogramm zurückgeliefert werden.

Klasse: Erläuterungen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 41: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

41

Das Testprogramm

C.O.

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 42: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

42C.O.

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Das Testprogramm

Noch besser: Fachkonzept unter „Module“ codieren.

Page 43: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

43

Erläuterungen

C.O.

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 44: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

44C.O.

Erläuterungen

Das Testprogramm setzt hier die Werte der Attribute. In der Praxis wäre die Quelle dieser Daten z. B. eine Datenbank. Ein Programm, welches die Daten zu-nächst setzt und dann unmittelbar danach wieder abfragt, ist aus der Sicht der Praxis „unsinnig“. Es wäre eher so, dass ein Programm für die Erfassung der Daten zuständig ist und ein anders für die Weiter-verarbeitung. Das wird auch später so vorgeführt – jetzt geht es zunächst einmal nur darum, den „Mecha-nismus“ zu begreifen. Daher wurde auch die Bezeich-nung „Testprogramm“ gewählt!

Das Testprogramm setzt hier die Werte der Attribute. In der Praxis wäre die Quelle dieser Daten z. B. eine Datenbank. Ein Programm, welches die Daten zu-nächst setzt und dann unmittelbar danach wieder abfragt, ist aus der Sicht der Praxis „unsinnig“. Es wäre eher so, dass ein Programm für die Erfassung der Daten zuständig ist und ein anders für die Weiter-verarbeitung. Das wird auch später so vorgeführt – jetzt geht es zunächst einmal nur darum, den „Mecha-nismus“ zu begreifen. Daher wurde auch die Bezeich-nung „Testprogramm“ gewählt!

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 45: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

45

Programmtest

C.O.

Es klappt:

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 46: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

46

Beziehungen zwischen Klassen/Objekten

C.O.

Überlegung: Wie ist nun der Zusammenhang zwischen dem Testprogramm und dem Objekt „Kfz“ (Fachkonzept) zu modellieren?

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 47: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

47

Beziehungen zwischen Klassen/Objekten

C.O.

Überlegung: Wie ist nun der Zusammenhang zwischen dem Testprogramm und dem Objekt „Kfz“ (Fachkonzept) zu modellieren?

Assoziation zwischen Klassen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 48: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

48C.O.

Überlegung: Wie ist nun der Zusammenhang zwischen dem Testprogramm und dem Objekt „Kfz“ (Fachkonzept) zu modellieren?

Assoziation zwischen Klassen

Eine Methode der Klasse nutzen:

Auto1.erfassen a, b, c

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Beziehungen zwischen Klassen/Objekten

Page 49: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

49

Jetzt wird gerechnet!

C.O.

Aufgabe:

Für den Autoteilezubehörshop ist eine ähnliche Klasse wie bei dem vorherigen Beispiel festzulegen.

Die Verkaufspreisberechnung funktioniert folgendermaßen: Der VK Preis (netto) ergibt sich aus dem Einkaufspreis multipliziert mit dem Kalkulationsfaktor (Prozentzahl).

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 50: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

50

Tipp

C.O.

Die Klasse:

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Option Explicit Private Artikelnummer As Integer Private Bezeichnung As String Private EK_Preis As Double Private K_Faktor As Double Sub erfassen(EkP As Double) Artikelnummer = 1234 Bezeichnung = "Sitzschoner" K_Faktor = 50 EK_Preis = EkPEnd Sub Function Ausgeben_Bezeichnung() Ausgeben_Bezeichnung = BezeichnungEnd FunctionFunction Ermitteln_VK_Preis() Ermitteln_VK_Preis = (EK_Preis * K_Faktor / 100) + EK_PreisEnd Function

Page 51: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

51

Testprogramm

C.O.

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Sub Testprg() Dim Autoz As Kfz_Zubehoer Dim bez As String Dim EP As Double Dim VkP As Double Set Autoz = New Kfz_Zubehoer EP = InputBox("Bitte Einkaufspreis eingeben: ") Autoz.erfassen EP MsgBox (Autoz.Ausgeben_Bezeichnung) MsgBox (Autoz.Ermitteln_VK_Preis) Set Auto1 = NothingEnd Sub

Page 52: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

52C.O.

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Die letzte Klassendefinition zeigt, dass es offensichtlich zwei „Sorten“ von Methoden gibt. Die eine „Sorte“ ist letztlich nur dafür da, den Objekteigen -schaften Werte zuzuweisen oder diese Werte abzurufen:

Sub erfassen(EkP As Double)………………Function Ausgeben_Bezeichnung()………………

Sub erfassen(EkP As Double)………………Function Ausgeben_Bezeichnung()………………

Die zweite „Sorte“ führt kompliziertere Dinge durch, hier die Berechnung eines neuen Wertes aus zwei Eigenschaften/Attributen der Klasse:

Function Ermitteln_VK_Preis() Ermitteln_VK_Preis = (EK_Preis * K_Faktor / 100) + EK_PreisEnd Function

Function Ermitteln_VK_Preis() Ermitteln_VK_Preis = (EK_Preis * K_Faktor / 100) + EK_PreisEnd Function

Eigenschaftsprozeduren

Page 53: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

53

Eigenschaftsprozeduren

C.O.

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Es erscheint sicher sinnvoll, diesen Unterschied in der Implementierung zu Ausdruck zu bringen. Dies erfolgt mit den Eigenschaftsprozeduren

Property Let (Wert setzen)Property Get (Wert auslesen).

Hierbei handelt es sich um eine Alternative zu den bisherigen Möglichkeiten, Attributwerte zu setzen oder zu lesen. Angesprochen ist also nur die erste „Sorte“ Methoden, für „Function Ermitteln_VK_Preis()“ bleibt alles so, wie bisher.

Page 54: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

54

Eigenschaftsprozeduren

C.O.

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Option Explicit Private mBezeichnung As String Private mEK_Preis As Double Private mK_Faktor As Double Public Property Let Artikelbezeichnung(Bez As String) mBezeichnung = BezEnd PropertyPublic Property Let Einkaufspreis(EkP As Double) mEK_Preis = EkPEnd PropertyPublic Property Let K_Faktor(KF As Double) mK_Faktor = KFEnd PropertyPublic Property Get Artikelbezeichnung() As String Artikelbezeichnung = mBezeichnungEnd PropertyFunction Ermitteln_VK_Preis() Ermitteln_VK_Preis = (mEK_Preis * mK_Faktor / 100)+EK_PreisEnd Function

Option Explicit Private mBezeichnung As String Private mEK_Preis As Double Private mK_Faktor As Double Public Property Let Artikelbezeichnung(Bez As String) mBezeichnung = BezEnd PropertyPublic Property Let Einkaufspreis(EkP As Double) mEK_Preis = EkPEnd PropertyPublic Property Let K_Faktor(KF As Double) mK_Faktor = KFEnd PropertyPublic Property Get Artikelbezeichnung() As String Artikelbezeichnung = mBezeichnungEnd PropertyFunction Ermitteln_VK_Preis() Ermitteln_VK_Preis = (mEK_Preis * mK_Faktor / 100)+EK_PreisEnd Function

Page 55: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

55

Das Testprogramm

C.O.

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 56: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

56

Rabattberechnung

C.O.

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 57: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

57

Tilgungsplan

C.O.

Es ist ein Programm zu erstellen, welchen den Tilgungsplan eines Kredits ausgibt (Annuitätentilgung). Nach der Eingabe der Kredithöhe, des Zinssatzes, der jährlichen Rückzahlung und der Laufzeit soll eine Tabelle mit folgenden Angaben ausgegeben werden:

Jahr Zins (in Euro) Tilgung Restkredit

Wird eine Laufzeit < 1 oder größer 15 eingegeben, wird standardmäßig eine Laufzeit von 15 Jahren angenommen.

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 58: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

58C.O.

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Exkurs: API

Das Component Object Model (COM) muss im Zusammenhang mit dem Begriff API gesehen werden.

API (Abk. für "application programming interface") ist eine Schnittstelle für die Programmierung von Anwendungsprogrammen.

Beispiele:

 - funktionsorientierte (z. B. Dynamic Link Library, DLL)  - dateiorientierte (z. B. Gerätedateien unter UNIX)  - objektorientierte (z. B. ActiveX-DLLs)  - protokollorientierte (z. B. FTP)

u.a.

Viele Programmierer verwenden die allgemeine Abkürzung API zur Bezeichnung der speziellen Windows - API (auch WinAPI) => Verwirrung!

Page 59: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

59C.O.

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Windows - API

• Systembibliotheken von Windows

• Bereitstellung von Windows – Funktionen in VBA

• Bietet damit eine beträchtliche Erweiterung des Sprache

• Auf Bibliotheken verteilt

Die wichtigsten Bibliotheken sind:

Kernal32.dll (z. B. Funktion im I/O – Bereich, Dateisystem …)

User32.dll (z. B.: Mauszeiger, Menüs …)

GDI32.dll (z. B.: Grafik, Farbe …)

Page 60: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

60C.O.

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Windows - API

Aufgabe:

Es ist der Ordner des Windows-Systemverzeichnisses zu ermitteln.

Hilfe: Aufruf der API – Funktion „GetWindowsDirectory“

Hinweis: Zur Kontrolle wurde das C-Laufwerk umbenannt.

Aufgabe:

Es ist der Ordner des Windows-Systemverzeichnisses zu ermitteln.

Hilfe: Aufruf der API – Funktion „GetWindowsDirectory“

Hinweis: Zur Kontrolle wurde das C-Laufwerk umbenannt.

Page 61: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

61C.O.

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Lösung

Public Declare Function GetWindowsDirectory _Lib "kernel32" Alias "GetWindowsDirectoryA" ( _ByVal lpBuffer As String, _ByVal nSize As Long) As Long

Option ExplicitPublic Function GetWinDir() As String Dim strWinOrdner As String * 255 Dim lngLaenge As Long'API-Funktion aufrufen: lngLaenge = GetWindowsDirectory(strWinOrdner, _ Len(strWinOrdner)) GetWinDir = Left(strWinOrdner, lngLaenge)End Function

Sub Test_GetWinDir() MsgBox "Windows-Ordner: " & GetWinDirEnd Sub

Public Declare Function GetWindowsDirectory _Lib "kernel32" Alias "GetWindowsDirectoryA" ( _ByVal lpBuffer As String, _ByVal nSize As Long) As Long

Option ExplicitPublic Function GetWinDir() As String Dim strWinOrdner As String * 255 Dim lngLaenge As Long'API-Funktion aufrufen: lngLaenge = GetWindowsDirectory(strWinOrdner, _ Len(strWinOrdner)) GetWinDir = Left(strWinOrdner, lngLaenge)End Function

Sub Test_GetWinDir() MsgBox "Windows-Ordner: " & GetWinDirEnd Sub

Quellcode: Als Modul anlegen!

Wie zu erkennen ist, muss hinsichtlich der Parameter sehr „systemnah“ gearbeitet werden. …As string * 255: Zeichenkette mit fester Länge, Grund: Diese API ist in C programmiert.

Testprozedur

Page 62: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

62C.O.

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Test

Weitere Beispiele und Erklärungen, s. A. JANKA (Quellen)

Page 63: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

63C.O.

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Component Object Model

Das Component Object Model (COM) erlaubt (u. a.) den objektorientierten Zugriff auf Computerdienste mit VBS/VBA.

COM ist damit eine spezielle API.

In diesem Zusammenhang ist unter Komponente eine compilierte Programmdatei zu verstehen, welche i. d. R. mehrere Klassen enthält. Damit werden die entsprechenden Objekte (z. B. unter VBS, aber auch unter C++, C#, Java oder VB) erzeugt, mit denen z. B. der Zugriff auf Funktionen des Betriebssystems Windows realisiert werden kann.

Die folgenden Beispiele orientieren sich an D. JOHLEN (s. Quellen).

Page 64: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

64C.O.C.O.

Das Dateisystem als Komponente

FileSystemObject

Drives

getFile(pfad):FilemoveFile(quellPfad, zielPfad)……………..

Stark vereinfachte Klassenmodelle der COM – Komponente, die für das Dateisystem zuständig ist.

File

NameDatelastModifiedparentFolder

moveFile(zielPfad)……………..

Beispiel eines Anwendungsfalls: Eine Datei soll von einem Verzeichnis in ein anderes verschoben werden. Konkret: Die Datei „test1.txt“ im Verzeichnis c:\vz1\ soll in das Verzeichnis c:\vz2\ verschoben werden.

Beispiel eines Anwendungsfalls: Eine Datei soll von einem Verzeichnis in ein anderes verschoben werden. Konkret: Die Datei „test1.txt“ im Verzeichnis c:\vz1\ soll in das Verzeichnis c:\vz2\ verschoben werden.

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 65: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

65C.O.C.O.

Das Dateisystem als Komponente

Set FSObjekt = CreateObject("Scripting.FileSystemObject")Set Datei = FSObjekt.getFile("h:\SE\test1.txt")Datei.move "h:\SX\"MsgBox "Dateien umkopiert!„

Set FSObjekt = CreateObject("Scripting.FileSystemObject")Set Datei = FSObjekt.getFile("h:\SE\test1.txt")Datei.move "h:\SX\"MsgBox "Dateien umkopiert!„

Z1Z2Z3Z4

Z1: Erzeugung des Objektes „FSObjekt“ mit der Methode CreateObject. Als Schnittstellenparameter muss die Klasse „FileSystemObject“ aus dem Paket „Scripting“ angegeben werden.

Z2: Erzeugen des Objektes „Datei“ durch das Senden der Nachricht „getFile“.

Z3: Senden der Nachricht „move“ (inkl. Parameter) an das Objekt „Datei“.

Z1: Erzeugung des Objektes „FSObjekt“ mit der Methode CreateObject. Als Schnittstellenparameter muss die Klasse „FileSystemObject“ aus dem Paket „Scripting“ angegeben werden.

Z2: Erzeugen des Objektes „Datei“ durch das Senden der Nachricht „getFile“.

Z3: Senden der Nachricht „move“ (inkl. Parameter) an das Objekt „Datei“.

Sowohl für das Modellieren als auch für die Erklärung eines Programms ist diese verbale Ausdrucksweise „ungeschickt“. UML kennt neben den Klassendiagrammen noch viele weitere Modellierungstechniken. Eine Möglichkeite wird nun vorgestellt.

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 66: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

66C.O.C.O.

Sequenzdiagramm

C.O.

Erklärung:

Das Sequenzdiagramm dient (u. a.) der Darstellung, wie Objekte Nachrichten austauschen. Es werden zeitliche Aspekt berücksichtigt.

Das Sequenzdiagramm dient (u. a.) der Darstellung, wie Objekte Nachrichten austauschen. Es werden zeitliche Aspekt berücksichtigt.

Beispiel: Zubehörshop des Autohauses

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 67: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

67C.O.C.O.

Unser Beispiel

C.O.

Sequenzdiagramm für den Anwendungsfall „Datei verschieben“

FSObjekt:

FileSystemObject

(new)

Datei:

File

getFile(…)

Durch getFile wurde ein neues Objekt erzeugt!

move(…)

Folge: Datei ist verschoben!

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 68: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

68C.O.C.O.

Wer hat wann zugegriffen?

C.O.

File

NameDatelastModifiedparentFolder

moveFile(zielPfad)……………..

Nochmals zurück zur Klasse „File“:

Aufgabe: Auf das Attribut DatelastModified kann direkt (ohne Methode) zugegriffen werden. Erstellen Sie bitte ein Programm, welches das Datum der letzten Änderung einer beliebigen Datei in einem beliebigen Verzeichnis ermittelt und ausgibt (das entsprechende Sequenzdiagramm bitte nicht vergessen).

Aufgabe: Auf das Attribut DatelastModified kann direkt (ohne Methode) zugegriffen werden. Erstellen Sie bitte ein Programm, welches das Datum der letzten Änderung einer beliebigen Datei in einem beliebigen Verzeichnis ermittelt und ausgibt (das entsprechende Sequenzdiagramm bitte nicht vergessen).

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 69: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

69C.O.C.O.

Set FSObjekt = CreateObject("Scripting.FileSystemObject")Set Ordner = FSObjekt.getFolder("c:\SE\")Set Dateien = Ordner.filesSet Datei = Dateien.item("test1.txt")MsgBox "Datum des letzten Zugriffs: " & Datei.dateLastModified

Set FSObjekt = CreateObject("Scripting.FileSystemObject")Set Ordner = FSObjekt.getFolder("c:\SE\")Set Dateien = Ordner.filesSet Datei = Dateien.item("test1.txt")MsgBox "Datum des letzten Zugriffs: " & Datei.dateLastModified

Lösung der Aufgabe

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 70: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

70C.O.C.O.

Ein Programm erstellt eine HTML – Seite, in der alle Dateien eines Projekt-Verzeichnisses und das Datum des letzten Zugriffs angezeigt werden.

Aufgabe: Beschreiben Sie bitte die notwendigen Lösungsschritte verbal.

Tipp: Benötigt wird ein Dateisystem, ein Ordner mit Container, eine HTML – Datei, eine Schleife zum Lesen und Schreiben in die Datei…

Ein Programm erstellt eine HTML – Seite, in der alle Dateien eines Projekt-Verzeichnisses und das Datum des letzten Zugriffs angezeigt werden.

Aufgabe: Beschreiben Sie bitte die notwendigen Lösungsschritte verbal.

Tipp: Benötigt wird ein Dateisystem, ein Ordner mit Container, eine HTML – Datei, eine Schleife zum Lesen und Schreiben in die Datei…

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Ein Tool zur Projektverwaltung

Page 71: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

71C.O.C.O.

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Lösung: Verbal

1. Dateisystemobjekt erzeugen

2. Auf den Ordner zugreifen

3. Auf den Dateicontainer zugreifen

4. HTML - Datei anlegen

5. Eröffnungstags in HTML – Datei schreiben

6. Relevante Dateien im Dateicontainer suchen und schreiben (Schleife!)

7. Endtags schreiben

8. Datei schließen

1. Dateisystemobjekt erzeugen

2. Auf den Ordner zugreifen

3. Auf den Dateicontainer zugreifen

4. HTML - Datei anlegen

5. Eröffnungstags in HTML – Datei schreiben

6. Relevante Dateien im Dateicontainer suchen und schreiben (Schleife!)

7. Endtags schreiben

8. Datei schließen

Page 72: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

72C.O.

Sub htme() 'Dateisystemobjekt erzeugen. Set projektFSO = CreateObject("Scripting.FileSystemObject") 'Auf den Quellordner zugreifen. Set projektOrdner = projektFSO.getFolder("c:\Projekt_VBA") 'Auf den Dateicontainer des Quellordners zugreifen. Set projektDateien = projektOrdner.Files 'Neue index.html Datei anlegen Set projektHTML = projektFSO.CreateTextFile("c:\Projekt_VBAindex.html")

'HTML Eröffnungstags projektHTML.writeLine "<HTML>" projektHTML.writeLine "<h1> Projektordner " & projektOrdner.Name & "</h1>" projektHTML.writeLine "<hr>" projektHTML.writeLine "<BODY>"

For Each datei In projektDateien projektHTML.writeLine "<P> <A href=" & datei.Name & ">" & datei.Name & " </A> , zuletzt geändert: " & datei.datelastmodified & " </P> " projektHTML.writeLine "<hr>" Next

' HTML Endtags projektHTML.writeLine "</BODY>" projektHTML.writeLine "</HTML>" projektHTML.Close MsgBox "HTML File erzeugt."End Sub

Sub htme() 'Dateisystemobjekt erzeugen. Set projektFSO = CreateObject("Scripting.FileSystemObject") 'Auf den Quellordner zugreifen. Set projektOrdner = projektFSO.getFolder("c:\Projekt_VBA") 'Auf den Dateicontainer des Quellordners zugreifen. Set projektDateien = projektOrdner.Files 'Neue index.html Datei anlegen Set projektHTML = projektFSO.CreateTextFile("c:\Projekt_VBAindex.html")

'HTML Eröffnungstags projektHTML.writeLine "<HTML>" projektHTML.writeLine "<h1> Projektordner " & projektOrdner.Name & "</h1>" projektHTML.writeLine "<hr>" projektHTML.writeLine "<BODY>"

For Each datei In projektDateien projektHTML.writeLine "<P> <A href=" & datei.Name & ">" & datei.Name & " </A> , zuletzt geändert: " & datei.datelastmodified & " </P> " projektHTML.writeLine "<hr>" Next

' HTML Endtags projektHTML.writeLine "</BODY>" projektHTML.writeLine "</HTML>" projektHTML.Close MsgBox "HTML File erzeugt."End Sub

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Lösung: VBA - Code

Page 73: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007.

73

Quellen

C.O.

HELD, B. (2000): EXCEL-VBA-Programmierung. - München, Mark und Technik-Verlag

JANKA, A. (2005): VBA mit Word. – Bonn, Galileo Computing – Verlag

JOHLEN, D. (2004): Anwendungsentwicklung.- Holland + Josenhans-Verlag

MARTIN, R. (1999): VBA mit Office 2000 lernen. – Bonn, Addison-Wesley – Verlag

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA & Objekte

Daten&Grund-strukturen

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen


Recommended