objektorientierung mit vba visual basic for applications klassen und objekte Übungen christoph...
TRANSCRIPT
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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).
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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
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!
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 …)
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.
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
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)
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).
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
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
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
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
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
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
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
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
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
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