• Keine Ergebnisse gefunden

Programmieren in Anwendungen

N/A
N/A
Protected

Academic year: 2022

Aktie "Programmieren in Anwendungen"

Copied!
41
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Programmieren in Anwendungen

Annette Bieniusa

Technische Universit¨at Kaiserslautern bieniusa@cs.uni-kl.de

23.05.2013

(2)

Uberblick ¨

Visual Basic for Applications (VBA) Ausdr¨ucke

Kontrollstrukturen Prozeduren

Im Dialog mit dem Benutzer Objekte in VBA

VBA Objekte in Word und Excel

(3)

Themen

Visual Basic for Applications(VBA)

I Wiederholung grundlegender Konzepte der imperativen Programmierung anhand der neuen Sprache VB (Visual Basic)

I Einf¨uhrung in die ereignisorientierte Programmierung

I Anwendungsbeispiele mit VBA in Word und Excel

Statistik und Grafiken mit R

I Einf¨uhrung in die Statistiksoftware R

I Wiederholung grundlegender Konzepte der Statistik und Datenanalyse

I Datenvisualisierung und Datenanalyse in R an ausgew¨ahlten Fallstudien

(4)

Visual Basic for Applications (VBA)

I Skriptsprache zur Automatisierung und Anpassung von Microsoft Office Programmen

I Basiert auf der Syntax von Visual Basic (nicht mehr kompatibel seit VB.NET)

I Modul-orientiert und prozedural

Literaturhinweis

VBA-Programmierung - Integrierte L¨osungen mit Office 2010, 1.

Auflage, Okt 2010 (erh¨altlich im Rechenzentrum bzw.

HERDT-Verlag)

(5)

Typische Einsatzgebiete

I Automatisiertes Erzeugen von Dokumenten wie Serienbriefen

I Benutzerdefinierte Dialogfenster oder Fehlermeldungen

I Dokumentstatistiken erstellen

I Daten aus anderen Anwendungen einbinden (insbesondere Access-Datenbanken)

I Einbinden von Funktionalit¨at spezifischer Office-Anwendungen (integrierte L¨osungen)

I Umsatz- und Budgetzahlen aus einer Access-Datenbank werden in Excel ausgewertet und visualisiert.

I Umfangreiche Excel-Tabellen k¨onnen ¨uber Word kompakt gedruckt werden.

(6)

Beispiel: Berechnung von Zeitr¨ aumen

’ D a u e r des S e m e s t e r s Sub A n z a h l T a g e ()

Dim H e u t e As Date, S e m e s t e r e n d e As Date, A u s g a b e As S t r i n g

H e u t e = D a t e

S e m e s t e r e n d e = D a t e V a l u e(" 2 0 . 0 7 . 2 0 1 3 ")

A u s g a b e = " Bis zum S e m e s t e r e n d e s i n d es n o c h " &

D a t e D i f f(" d ", Heute , S e m e s t e r e n d e ) & " T a g e . "

M s g B o x A u s g a b e End Sub

(7)

Ausdr¨ ucke

(8)

Wiederholung: Variablen

I Mit Hilfe von Variablen kann man (tempor¨ar) Werte speichern und diese in den Prozeduren verwenden.

I Der Wert einer Variablen kann durch eine Zuweisung ver¨andert werden.

I Variablen werden ¨uber Bezeichner (Variablennamen) referenziert.

I Die Deklarationeiner Variablen ist das Vereinbaren einer Variablen vor ihrem ersten Gebrauch.

Dim V a r i a b l e n n a m e As D a t e n t y p e I Beispiele:

Dim A n z a h l As I n t e g e r Dim A u s g a b e T e x t As S t r i n g

Dim A l t e r As Integer, T e m p e r a t u r As I n t e g e r

(9)

Konstanten

I Konstanten werden ebenfalls ¨uber Bezeichner referenziert, sind aber unver¨anderlich.

I Einer Konstanten wird bereits w¨ahrend der Deklaration ein Wert zugewiesen, der sp¨ater nicht mehr ver¨andert werden kann.

I VBA stellt eine Vielzahl von Konstanten zur Verf¨ugung (siehe z.B. Abschnitt Meldungsfenster).

C o n s t K o n s t a n t e n n a m e As D a t e n t y p e = A u s d r u c k I Beispiele:

C o n s t Pi as D o u b l e = 3 . 1 4 1 5 9

C o n s t P r o g r a m m n a m e as S t r i n g = " M e i n P r o g r a m m "

(10)

Operatoren

I Ein Ausdruck ist eine Kombination aus Werten, Variablen, Konstanten und Operatoren.

I Arithmetische Operatoren: +,−,∗, /,\, Mod, ˆ

I Vergleichsoperatoren: <,<=, >,>=, =, <>

I Logische Operatoren: Not, And, Or

I Verkettungsoperator: & (Konkatenation von Strings)

(11)

Vergleiche mit String-Mustern

I Der Vergleichsoperator Like wird verwendet, um Strings mit String-Mustern zu vergleichen.

Zeichen Bedeutung Beispiel

? Ein einzelnes Zeichen "Hallo"Like "H?lo"-> false

* Kein oder mehrere Zeichen "Haut"Like "H*t"-> true [Liste] Ein Zeichen der Liste "X"Like "[A-Z]"-> true [!Liste] Ein Zeichen nicht in der Liste "K"Like "[!a-m]"-> false

(12)

Kontrollstrukturen

(13)

Wiederholung: Verzweigungen

I Bei Verzweigungen werden Programmteile abh¨angig von einer Bedingung ausgewertet.

If A u s d r u c k T h e n ...

E l s e ...

End If

If A l t e r >= 18 T h e n M s g B o x " N o r m a l t a r i f "

E l s e

M s g B o x " J u g e n d t a r i f "

End If

(14)

Schleifen

I Mit Schleifen wird ein Anweisungsblock wiederholt ausgef¨uhrt.

I Z¨ahlergesteuerte Wiederholung

For Z a e h l e r = S t a r t To E n d e [ S t e p d ] A n w e i s u n g s b l o c k

N e x t I Beispiel

For X = 1 To 20 S t e p 5 D e b u g .P r i n t " X ist " & X N e x t

I Schrittweite wird durch Step angepasst, ohne Angabe wird Schrittweite 1 verwendet.

(15)

Schleifen unter Bedingungen

I Kopfgesteuerte bedingte Wiederholung

Do W h i l e/ U n t i l A u s d r u c k A n w e i s u n g s b l o c k L o o p

X = 1

Do U n t i l X = 20

D e b u g .P r i n t " X ist " & X X = X + 5

L o o p

Y = 1

Do W h i l e Y < > 20

D e b u g .P r i n t " Y ist " & Y Y = Y + 5

L o o p I Fussgesteuerte bedingte Wiederholung

Do

A n w e i s u n g s b l o c k L o o p W h i l e/ U n t i l

A u s d r u c k

X = 1 Do

D e b u g .P r i n t " X ist " & X X = X + 5

L o o p U n t i l X = 20 I Fussgesteuerte Schleifen werden immer mind. einmal

ausgef¨uhrt!

(16)

Prozeduren

(17)

Ubersicht: Prozeduren ¨

I Prozeduren bestehen aus einer Folge von Anweisungen (z.B.

Zuweisungen von Variablen, Prozeduraufrufen, Verzweigungen, Schleifen, ...).

I Wichtige Form der Abstraktion beim Programmieren!

(18)

Sub-Prozeduren

I Sub-Prozeduren geben keinen Wert zur¨uck.

I Syntax von einfachen Sub-Prozeduren

Sub P r o z e d u r n a m e () ...

End Sub

I Syntax von Prozeduraufrufen

P r o z e d u r n a m e C a l l P r o z e d u r n a m e

(19)

Prozeduren mit Parametern

I Syntax von Sub-Prozeduren mit Parametern

Sub P r o z e d u r n a m e ([ B y V a l | B y R e f ] P a r a m e t e r n a m e [ As T y p e ] ,...)

...

End Sub

I Syntax von Prozeduraufrufen

P r o z e d u r n a m e ( A u s d r u c k , . . . ) C a l l P r o z e d u r n a m e ( A u s d r u c k , . . . )

I Der Wert des Ausdrucks wird als Kopie an den die Prozedur weitergegeben. Die Prozedur kann den ¨ubergebenen Wert ver¨andern, ohne dass sich der urspr¨ungliche Wert ¨andert (call by value).

Sub I n c r e m e n t ( B y V a l i n p u t as I n t e g e r) i n p u t = i n p u t + 1

End Sub ...

Dim i as Integer, k as I n t e g e r i = 10

I n c r e m e n t ( i )

k = i ’ k hat h i e r den W e r t 10

(20)

Prozeduren mit Parametern und Call-by-Reference

I Alternativ kann ein Parameter eine Referenz auf die Variable erhalten, die den Wert enth¨alt (call by reference).

I Die Prozedur arbeitet dann nicht mit einer Kopie, sondern kann die Variable selbst direkt ver¨andern.

Sub I n c r e m e n t ( B y R e f i n p u t as I n t e g e r) i n p u t = i n p u t + 1

End Sub ...

Dim i as Integer, k as I n t e g e r i = 10

I n c r e m e n t ( i )

k = i ’ k hat h i e r den W e r t 11

(21)

Funktionen

I Funktionen k¨onnen, wie Prozeduren, mehrere Anweisungen ausf¨uhren und gebenimmer einen Wert an das aufzurufende Programm zur¨uck.

I Syntax von Funktionen

F u n c t i o n F u n k t i o n s n a m e ([ B y V a l | B y R e f ] P a r a m e t e r n a m e [ As T y p e] ,...) [ As T y p e]

...

F u n k t i o n s n a m e = R u e c k g a b e w e r t ...

End F u n c t i o n

I Wenn kein R¨uckgabewert spezifiziert wird, wird ein Standardwert entsprechend dem Datentypen der Funktion zur¨uckgegeben.

I Syntax von Funktionsaufrufen

F u n k t i o n s n a m e ( A u s d r u c k , . . . )

I W¨ahrend Prozeduraufrufe eigenst¨andige Anweisungen sind, sind Funktionsaufrufe Ausdr¨ucke.

(22)

Beispiele: Prozeduren und Funktionen

Sub A b s a t z F o r m a t i e r e n ()

A c t i v e D o c u m e n t . S e l e c t i o n . R a n g e . B o l d = T r u e A c t i v e D o c u m e n t . S e l e c t i o n . R a n g e . I t a l i c = T r u e End Sub

F u n c t i o n Max( X as Integer, Y as I n t e g e r) as I n t e g e r If X < Y T h e n

Max = Y E l s e

Max = X End F u n c t i o n

(23)

Im Dialog mit dem Benutzer

(24)

Wiederholung: Meldungsfenster

I Meldungsfenster k¨onnen dazu genutzt werden, dem Benutzer Informationen mitzuteilen und auch abzufragen. Sie bestehen aus demMeldungstext und standardm¨aßig der Schaltfl¨ache

“OK”. Sie kann optional mit einem Titel,

Informationssymbolen und weiteren Schaltfl¨achen erg¨anzt werden.

I Einfaches Meldungsfenster

M s g B o x " M e l d u n g s t e x t "

I Meldungsfenster mit Titel und Informationssymbol

M s g B o x " M e l d u n g s t e x t ", v b I n f o r m a t i o n , " T i t e l "

(25)

Schaltfl¨ achen

M¨ogliche Kombinationen von Schaltfl¨achen Konstante Wert Schaltfl¨ache

vbOkOnly 0 OK

vbOkCancel 1 OK und Abbrechen

vbAbortRetryIgnore 2 Abbrechen, Wiederholen und Ignorieren

vbYesNoCancel 3 Ja, Nein und Abbrechen

vbYesNo 4 Ja und Nein

vbRetryCancel 5 Wiederholen und Abbrechen

(26)

R¨ uckgabewerte von Schaltfl¨ achen

Konstante Wert gew¨ahlte Schaltfl¨ache

vbOk 1 OK

vbCancel 2 Abbrechen

vbAbort 3 Abbrechen

vbRetry 4 Wiederholen

vbIgnore 5 Ignorieren

vbYes 6 Ja

vbNo 7 Nein

(27)

Eingabedialoge

I Die FunktionInputBox erzeugt Eingabedialog mit Text und einer Eingabezeile.

I Der vom Anwender eingegebene Wert wird als String

zur¨uckgeliefert. Bei Bet¨atigen der Schaltfl¨acheAbbrechen ist es der leere String"".

I Der optionale ParameterDefault legt den Wert fest, der standardm¨assig im Eingabefeld angezeigt wird.

I n p u t B o x ( Text , [ T i t l e ] , [ D e f a u l t ])

(28)

Objekte in VBA

(29)

Objekte in VBA

I Alle Elemente in MS Office, wie Dokumente, Tabellen, Graphiken, etc., sind Objekte.

I Typische Objekte in Excel sind Arbeitsmappen (Workbook), Tabellenbl¨atter (Worksheet), Diagramme (Charts) und Zellen (Range,Cell).

I Das gerade aktive Objekt wird mittelsActiveXXX referenziert (z.B. ActiveWorkbook oderActiveCell).

I Eine vollst¨andige ¨Ubersicht listen die Developer Referenzen (z.B. http://msdn.microsoft.com/en-us/library/

office/ff846392(v=office.14).aspx).

(30)

Objekte

I Objekte sind Programmeinheiten, die Daten sowie die Prozeduren zum Verarbeiten dieser Daten enthalten.

I Objekte haben

I einen Zustand (definiert durch Eigenschaften/Properties),

I ein Verhalten (definiert durch objektspezifische Prozeduren/Methoden) und

I eine Identit¨at (wodurch es sich von Objekten des gleichen Typs unterscheidet).

(31)

Klassen

I Eine Klasse ist eine Art Modell f¨ur Objekte des gleichen Typs.

I Sie dient als Bauplan f¨ur die einzelnen Objekte und definiert deren Eigenschaften und Methoden.

I Beispiel: Documentbezeichnet die Klasse f¨ur Word-Dokumente,

ActiveDocument eine Objekt-Instanz der KlasseDocument.

(32)

Zugriff auf Methoden und Eigenschaften

I Objektverweise sind Variablen, die eine Referenz auf ein Objekt enthalten.

I Deklaration von Objektvariablen

Dim O b j e k t v a r i a b l e as O b j e k t d a t e n t y p : I Zuweisung auf Objektvariable:

Set O b j e k t v a r i a b l e = O b j e k t I Zugriff auf Eigenschaften:

O b j e k t v a r i a b l e . E i g e n s c h a f t s n a m e I Aufruf von Methoden:

O b j e k t v a r i a b l e . M e t h o d e n n a m e

O b j e k t v a r i a b l e . M e t h o d e n n a m e ( P a r a m e t e r )

(33)

Auflistungen (Collections)

I Auflistungen sind spezielle Objekte, die aus einer Menge von Objekten des gleichen Typs bestehen.

I Beispiel: Die AuflistungWorksheetsin Excel enth¨alt alle aktuell ge¨offneten Tabellenbl¨atter.

I Auf einzelne Objekte in einer Auflistung wird ¨uber einen Indexwert zugegriffen (beginnend mit 1).

Sub B l a e t t e r ()

Dim A n z a h l As Integer, I n d e x as I n t e g e r A n z a h l = W o r k s h e e t s .C o u n t

For I n d e x = 1 To A n z a h l

D e b u g .P r i n t W o r k s h e e t s ( I n d e x ) .N a m e End Sub

I H¨aufig kann auch der Name des Objekts zum Zugriff verwendet werden.

W o r k b o o k s (" M a p p e 1 . x l s m ") . W o r k s h e e t s (" T a b e l l e 2 ") . R a n g e (

" A1 : B5 ")

(34)

Zusammenfassung

I Ausdr¨ucke: Variablen, Konstanten, zusammengesetzte Ausdr¨ucke mit Operatoren, Funktionsaufrufe

I Anweisungen (Statements): Prozeduraufrufe, Kontrollstrukturen (Verzweigungen, Schleifen)

I Meldungs- und Eingabefenster

I Objekte mit Eigenschaften und Methoden

(35)

VBA Objekte in Word und Excel

(36)

Beispiel: Dokumente in Word

Sub D o k u m e n t O e f f n e n S c h l i e s s e n E r s t e l l e n () Dim B r i e f As D o c u m e n t

Set B r i e f = D o c u m e n t s .O p e n( A c t i v e D o c u m e n t . P a t h & " \ T e s t b r i e f . d o c x ")

B r i e f .C l o s e

Set B r i e f = N o t h i n g ’ g i b t den S p e i c h e r p l a t z w i e d e r f r e i

End Sub

Activate Aktiviert das Dokument

Close Schliesst und speichert das Dokument

Path Pfad zum Speicherort des Dokuments

Printout Druckt das Dokument

Save Speichert das Dokument

SaveAs2 Speichert das Dokument unter einem neuen Namen

Weitere Methoden/Eigenschaften: Verwendung von Templates,

(37)

Textbereiche

I Ein RangeObjekt referenziert einen zusammenh¨angenden

Bereich eines Dokuments.

I Es wird ¨uber einen Start- und einen Endcharacter definiert.

I Ein RangeObjekt kann auch nur die Eingabemarke definieren.

Sub T e s t R a n g e O b j e c t s ()

Dim r n g I n s As Range , r n g P a r 1 As Range , r n g P a r 2 as R a n g e

Dim doc As D o c u m e n t

Set r n g P a r 1 = doc . P a r a g r a p h s (1) . R a n g e

M s g B o x " Der 1. A b s a t z b e g i n n t mit dem W o r t " &

r n g P a r 1 . W o r d s . F i r s t & " . "

Set r n g P a r 2 = doc . R a n g e ( S t a r t := doc . P a r a g r a p h s (2) . R a n g e . Start , End:= doc . P a r a g r a p h s (3) . R a n g e .End) Set r n g I n s = doc . R a n g e ( S t a r t :=0 , End: = 0 )

r n g I n s . I n s e r t B e f o r e " H e l l o "

End Sub

(38)

Markierte Textbereiche

I Das SelectionObjekt referenziert den markierten Bereich des aktuellen Dokuments.

Sub T e s t S e l e c t i o n O b j e c t () Dim r n g P a r a g r a p h As R a n g e S e l e c t i o n . F o n t . B o l d = T r u e S e l e c t C a s e S e l e c t i o n .T y p e

C a s e w d S e l e c t i o n N o r m a l

M s g B o x " Sie h a b e n f o l g e n d e n T e x t m a r k i e r t : "&

S e l e c t i o n . T e x t C a s e w d S e l e c t i o n I P

M s g B o x " Sie h a b e n n i c h t s m a r k i e r t "

Set r n g P a r a g r a p h = A c t i v e D o c u m e n t . P a r a g r a p h s (2) . R a n g e r n g P a r a g r a p h .S e l e c t

S e l e c t i o n . F o n t . I t a l i c = T r u e End Sub

(39)

Zugriff auf Dokumenteninhalte

Characters Auflistung einzelner Zeichen

Sentences Auflistung von S¨atzen

Paragraphs Auflistung von Abs¨atzen

Words Auflistung von Worten

Start/End Start- bzw. Endposition

Text Textinhalt

(40)

Beispiel: Arbeitsmappen und Tabellen in Excel

I Arbeitsmappen (Workbooks) beinhalten Tabellenbl¨atter (Worksheets) und Diagramme (Charts).

I UsedRange referenziert den verwendeten Bereich eines Tabellenblatts.

I CurrentRegionbezeichnet einen Bereich gef¨uellter Zellen, die von leeren Zellen umgeben sind.

I Mittels Cellslassen siche einzelne Zellen referenzieren.

Sub A r t i k e l S u c h e n ()

Dim A r t N r As String, Z a e h l e r As I n t e g e r

A r t N r = I n p u t B o x (" G e b e n Sie e i n e A r t i k e l n u m m e r ein : ",

" A r t i k e l s u c h e n ")

T h i s W o r k b o o k . S h e e t s (" A r t i k e l ") .A c t i v a t e

For Z a e h l e r = 1 To R a n g e (" A1 ") . C u r r e n t R e g i o n . R o w s .C o u n t If C e l l s ( Zaehler ,1) . V a l u e = A r t N r T h e n

M s g B o x " A r t i k e l w u r d e g e f u n d e n "

E x i t Sub End If

(41)

Zellbereiche

I Ein RangeObjekt bezeichnet in Excel einen zusammenh¨angenden Zellbereich.

W o r k s h e e t s (1) . R a n g e (" A4 ") . V a l u e

W o r k s h e e t s (" M e s s r e i h e ") . R a n g e (" B2 : B8 ") .C o u n t R a n g e (" A1 : A5 "," B1 : B5 ") .C o u n t

’ v e r w e n d e t i m p l i z i t das a k u t e l l e T a b e l l e n b l a t t R a n g e ( C e l l s (3 ,3) , C e l l s (4 ,6) ) .S e l e c t

’ e n t s p r i c h t R a n g e (" C3 : F3 ") . S e l e c t

Referenzen

ÄHNLICHE DOKUMENTE

Im Folgenden werden die beiden Pre- und Post-Operatoren innerhalb etwas komplexerer Ausdr¨ ucke verwendet.. Hinweis: Bei der

Im folgenden Programm haben sich in den logischen Ausdr¨ ucken wieder ein paar kleine Fehler eingeschlichen. Die nachfolgende Ausgabeanweisung (printf()) gibt immer an, f¨ ur welche

Da rechts aber eine Variable steht, k¨ onnte man die Ausd¨ ucke schachteln, denn der Wert einer Zuweisung ist das Ergebnis. Das ++ bezieht sich auf j, i wird um den neuen Wert von

Welche Klammern sind f¨ ur das Einklammern von arithmetischen und logischen Ausdr¨ ucken in der Programmiersprache C erlaubt. (): ja []: nein

– Two regular expressions may be concatenated; the resulting regular expression matches any string concatenating two substrings that match the subexpressions. – Two regular

– Auch f¨ur komplexere Strukturen als regul¨are Sprachen – G¨angig f¨ur die Beschreibung von Programmiersprachen.. Beispiel: Auszug der Grammatik

In vielen F¨ allen m¨ ochte man, dass ein regul¨ arer Ausdruck an einer Stelle nicht auf ein besonderes Zeichen sondern auf eine ganze Menge von Zeichen passt.. Dies kann durch

Du kannst nach literalen Zeichenketten suchen und weisst, dass bei regul¨ aren Aus- dr¨ ucke standardm¨ assig Gross- und Kleinschreibung unterschieden werden.. Du kannst regul¨