• Keine Ergebnisse gefunden

Programmieren in Anwendungen

N/A
N/A
Protected

Academic year: 2022

Aktie "Programmieren in Anwendungen"

Copied!
20
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Programmieren in Anwendungen

Annette Bieniusa

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

24.05.2013

(2)

Uberblick ¨

Ereignisorientierte Programmierung

UserForm-Dialoge

Integrierte Office-Automatisierung

Sicherheitsaspekte

(3)

Ereignisorientierte Programmierung

(4)

Ereignisorientierte Programmierung

I

Ereignisse treten z.B. beim Arbeiten mit Steuerelementen auf.

I

Ereignisse k¨ onnen durch den Benutzer direkt (beispielsweise durch Anklicken von Buttons, Wechsel zwischen

Dokumenten), aber auch durch das System selbst angestossen werden (z.B. ¨ Offnen oder Speichern von Dokumenten).

I

Ereignisprozeduren sind Makros, die als Reaktion auf bestimmte Ereignisse ausgef¨ uhrt werden.

’ H e b t bei M a r k i e r e n e i n e r Z e l l e die g e s a m t e Z e i l e und S p a l t e h e r v o r .

Sub W o r k s h e e t _ S e l e c t i o n C h a n g e ( B y V a l T a r g e t As R a n g e ) C e l l s . I n t e r i o r . C o l o r I n d e x = x l C o l o r I n d e x N o n e A c t i v e C e l l . E n t i r e R o w . I n t e r i o r . C o l o r I n d e x = 15

(5)

Beispiel: Durchlauf von Arbeitsbl¨ attern

Sub W o r k b o o k _ O p e n ()

A p p l i c a t i o n . O n K e y Key :=" { P g U p } ", P r o c e d u r e :=" S h e e t s U p "

A p p l i c a t i o n . O n K e y Key :=" { P g D n } ", P r o c e d u r e :="

S h e e t s D o w n "

End Sub

Sub S h e e t s U p () Dim i As I n t e g e r

i = A c t i v e S h e e t . I n d e x + 1

If i <= S h e e t s .C o u n t T h e n S h e e t s ( i ) .S e l e c t End Sub

Sub S h e e t s D o w n () Dim i As I n t e g e r

i = A c t i v e S h e e t . I n d e x - 1 If i >= 1 T h e n S h e e t s ( i ) .S e l e c t End Sub

(6)

Beispiel: Automatisierte Speicherabfrage

Sub W o r k b o o k _ O p e n ()

A p p l i c a t i o n . O n T i m e E a r l i e s t T i m e :=Now + T i m e V a l u e("

0 0 : 1 0 : 0 0 ") , P r o c e d u r e :=" S a v e W o r k b o o k "

End Sub

Sub S a v e W o r k b o o k ()

If M s g B o x(" S a v e w o r k b o o k ? ", v b Y e s N o ) = v b Y e s T h e n A c t i v e W o r k b o o k .S a v e

A p p l i c a t i o n . O n T i m e E a r l i e s t T i m e :=Now + T i m e V a l u e("

0 0 : 1 0 : 0 0 ") , P r o c e d u r e :=" S a v e W o r k b o o k "

End Sub

(7)

UserForm-Dialoge

(8)

Dialoge und Formulare

Integrierte Dialoge f¨ ur h¨ aufig verwendete Abfragen, z.B. Druck- oder Speicherdialog

Vordefinierte VBA-Dialoge f¨ ur einfache Benutzerein- und ausgaben, z.B.

InputBox

und

MsgBox

Benutzerdefinierte Dialoge (UserForm-Dialoge) f¨ ur komplexere Interaktion

Dokumente als Formulare durch direktes Einbetten von

Steuerelementen

(9)

Grundlagen zu UserForm-Dialogen

I

Vielzahl von Steuerelementen, z.B. Listenfelder, Schaltfl¨ achen, Eingabefelder

I

UserForm-Diloge werden durch Drag&Drop in der VBA-Entwicklungsansicht zusammengestellt.

I

Flexible Reaktion auf Benutzereingaben durch Ereignisprozeduren, z.B. Hinzuf¨ ugen von Werten

’ A n z e i g e n e i n e s F o r m u l a r s U s e r F o r m N a m e .S h o w

’ B e i m A k t i v i e r e n e i n e s F o r m u l a r s Sub U s e r F o r m N a m e _ A c t i v a t e () ...

End Sub

’ E r e i g n i s p r o z e d u r e n e r s t e l l e n Sub U s e r F o r m N a m e _ E r e i g n i s n a m e Sub S t e u e r e l e m e n t N a m e _ E r e i g n i s n a m e

’ R e s s o u r c e n f r e i g a b e U n l o a d U s e r F o r m N a m e

(10)

Integrierte Office-Automatisierung

(11)

Kommunikation zwischen Office-Anwendungen

I

Austausch von Daten kann auf verschiedenen Wegen erfolgen

I

Zwischenablage (bei bestimmten VBA-Objekten durch die Prozeduren

Copy

und

Paste

)

I

COM-Automation (Component Object Model) (Interprozesskommunikation unter Windows)

I

DAO/ADO (Data Access Objects/ActiveX Data Objects) (VBA-angepasste Objektmodelle zum Datenaustausch unter COM)

I

Integration von Funktionalit¨ a durch COM m¨ oglich

(12)

Allgemeine Schritte

1. Erstellen eines Verweises auf die Objektbibliothek der Office-Anwendung, die integriert werden soll

(VBA-Entwicklungsumgebung, Extras→Verweise...) 2. Erzeugung des zu integrierenden Objekts

3. Programmierung der erw¨ unschten Funktionalit¨ at

4. Freigabe des integrierten Objekts

(13)

Erzeugung des zu integrierenden Objekts

1. Deklaration der Objektvariablen

Dim a p p X As O b j e k t t y p ’ f r u e h e s B i n d e n Dim a p p W o r d As W o r d . A p p l i c a t i o n Dim a p p E x c e l as E x c e l . A p p l i c a t i o n Dim s h e e t E x c e l as E x c e l . S h e e t Dim a p p X As O b j e c t ’ s p a e t e s B i n d e n

2. Objektinstanzen erzeugen

I

Die

CreateObject

-Funktion startet die zugrunde liegende Anweisung und liefert einen Objektverweis auf eine neue Objektinstanz zur¨ uck.

I

Mit dem Sch¨ usselwort

New

wird die zugrunde liegende

Anweisung gestartet und wird eine neue Objektinstanz erzeugt (nur bei fr¨ uhem Binden).

I

Die

GetObject

-Funktion liefert einen Objektverweis auf eine

bereits gestartete Anwendung (h¨ aufig schneller).

(14)

Beispiele: Objekterzeugung mit Fehlerbehandlung

I

Verwendung von

CreateObjekt On E r r o r R e s u m e N e x t

Set A p p W o r d = C r e a t e O b j e c t(" W o r d . A p p l i c a t i o n ") If Err = 429 T h e n

M s g B o x " A n w e n d u n g W o r d n i c h t i n s t a l l i e r t "

End If

I

Verwendung von

GetObject On E r r o r R e s u m e N e x t

Set A p p W o r d = G e t O b j e c t( ," W o r d . A p p l i c a t i o n ") If Err = 429 T h e n

M s g B o x " A n w e n d u n g W o r d n o c h n i c h t g e s t a r t e t "

End If

I

Optionale Pfadangaben bei

GetObject

(15)

Objekte freigeben

I

Objekte schliessen bzw. beenden, danach stehen sie nicht mehr zur Verf¨ ugung

O b j e k t V a r i a b l e .C l o s e O b j e k t V a r i a b l e .Q u i t

I

Arbeitsspeicher freigeben

Set O b j e k t V a r i a b l e = N o t h i n g

I

Nicht freigegebener Arbeitsspeicher kann zu

Programmabst¨ urzen durch Speichermangel f¨ uhren.

(16)

Beispiel: Daten aus Excel auslesen und in Word einf¨ ugen

Sub D a t e n A u s E x c e l () On E r r o r G o T o F e h l e r S u b Dim app As E x c e l . A p p l i c a t i o n

Set app = G e t O b j e c t( ," E x c e l . A p p l i c a t i o n ") app . W o r k b o o k s .O p e n (" M a p p e . x l s x ")

If app . V i s i b l e = F a l s e T h e n app . V i s i b l e = T r u e

End If

A c t i v e D o c u m e n t . B o o k m a r k s (" W E R T ") .S e l e c t

S e l e c t i o n . I n s e r t A f t e r app . A c t i v e S h e e t . R a n g e (" A1 ") app .Q u i t

Set app = N o t h i n g E x i t Sub

F e h l e r S u b :

If Err = 429 T h e n

Set app = C r e a t e O b j e c t(" E x c e l . A p p l i c a t i o n ") E l s e

(17)

Beispiel: Einf¨ ugen einer Briefanrede

Dim a p p X L As E x c e l . A p p l i c a t i o n P r i v a t e Sub U s e r F o r m _ A c t i v a t e ()

Dim Z a e h l e r As I n t e g e r

Set a p p X L = C r e a t e O b j e c t(" E x c e l . A p p l i c a t i o n ") a p p X L . W o r k b o o k s .O p e n " N a m e n . x l s x "

a p p X L . S h e e t s (" M i t a r b e i t e r ") .A c t i v a t e

For Z a e h l e r =1 To a p p X L . R a n g e (" A2 ") . C u r r e n t R e g i o n . R o w s . C o u n t

Me . l s t N a m e .A d d I t e m a p p X L . C e l l s ( Zaehler , 2) N e x t

Me . l b l A n z a h l . C a p t i o n = Me . l s t N a m e n . L i s t C o u n t & " N a m e n g e l a d e n "

End Sub

P r i v a t e Sub c m d A b b r e c h e n _ C l i c k () a p p X L .Q u i t

Set a p p X L = N o t h i n g U n l o a d f r m B r i e f a n r e d e End Sub

(18)

Beispiel: Einf¨ ugen einer Briefanrede - Teil 2

P r i v a t e Sub l s t N a m e n _ C h a n g e () Dim Z e i l e As I n t e g e r

Dim A n r e d e As S t r i n g

Z e i l e = Me . l s t N a m e n . L i s t I n d e x + 1 If a p p X L . C e l l s ( Zeile , 3) = 1 T h e n E l s e

A n r e d e = " L i e b e F r a u " & a p p X L . C e l l s ( Zeile , 1) End If

Me . t x t B r i e f a n r e d e = A n r e d e End Sub

P r i v a t e Sub c m d E i n f u e g e n _ C l i c k ()

S e l e c t i o n . T y p e T e x t Me . t x t B r i e f a n r e d e c m d A b b r e c h e n _ C l i c k

(19)

Sicherheitsaspekte

(20)

Sicherheitseinstellungen f¨ ur Makros

I

Ab Office 356: Authentifizierung von vertrauensw¨ urdigen Quellen/Programmierern

I

Standardm¨ assig werden dann nur Makros ausgef¨ uhrt, die aus vertrauensw¨ urdigen Quellen stammen ( ¨ Uberpr¨ ufung durch digitale Signaturen).

I

Die Freigabe beliebiger Makros ist nicht empfehlenswert, da

hierbei grosse Sicherheitsl¨ ucken geschaffen werden!

Referenzen

ÄHNLICHE DOKUMENTE

Peripheral benzodiazepine receptor ligands induce apoptosis and cell cycle arrest in human hepatocellular carcinoma cells and enhance chemosensitivity to paclitaxel,

Man denkt auch an einen Verteiler- schlüssel für gespendete deutsche Zeitun- gen, die nach Ostpreußen gefahren und dort von einer Zentrale aus versandt werden. Ganz neue

nicht oder verfristet abgegeben) letzte Best and nicht abg ege abg ege ben 1 = n abg ege ben FlüAG-Be stan Novembe r 202 Zuweisun gen 10. 202 1 Zuweisun gsschlü I,II FlüAG)

[…] So werde ich bald inne, dass ich zwar die Lüge, aber ein allgemeines Gesetz zu lügen gar nicht wollen könne; denn nach einem solchen würde es eigentlich gar kein Versprechen

Diese Gesteine, die sich im Innern Glases Lletschers befanden, riesen bei ihrer Fortbewegun; ;teine git sich und LObClt8fl im @;uic der Zeit das Tal U—föruig aus. Lurch

Welcher Ausweis verwendet wird, richtet sich nach den Wohneinheiten und dem Baujahr des Gebäudes (Bild 1): Neubauten müssen gene- rell mit dem

Enthält Ihr Bescheid Informationen zur Auswahlgrenze im Hauptverfahren, so werden Ihnen für das 

wie hoch jeweils die (prognostizierten) Werte für die Anzahl der Einwohner und der Arbeitsplätze in Riedlingen als Ausgangswert der Verkehrsunter - suchung, als aktueller Wert,