26
Office 2000 COM Add-Ins Office 2000 COM Add-Ins Werkzeuge und Optimierung Werkzeuge und Optimierung Tilo Böttcher Tilo Böttcher Technical Specialist Technical Specialist Microsoft GmbH Microsoft GmbH

Office 2000 COM Add-Ins Werkzeuge und Optimierung Tilo Böttcher Technical Specialist Microsoft GmbH

Embed Size (px)

Citation preview

Page 1: Office 2000 COM Add-Ins Werkzeuge und Optimierung Tilo Böttcher Technical Specialist Microsoft GmbH

Office 2000 COM Add-InsOffice 2000 COM Add-InsWerkzeuge und OptimierungWerkzeuge und Optimierung

Tilo BöttcherTilo BöttcherTechnical SpecialistTechnical Specialist

Microsoft GmbHMicrosoft GmbH

Page 2: Office 2000 COM Add-Ins Werkzeuge und Optimierung Tilo Böttcher Technical Specialist Microsoft GmbH

Nach gut zwölf Monaten Office 2000 Nach gut zwölf Monaten Office 2000 wollen wir neben einem Überblick über wollen wir neben einem Überblick über die programmatischen die programmatischen Erweiterungsmöglichkeiten mit COM Add-Erweiterungsmöglichkeiten mit COM Add-Ins in den verschiedenen Office 2000 Ins in den verschiedenen Office 2000 Anwendungen auch Möglichkeiten für Anwendungen auch Möglichkeiten für das Optimieren von VB/VBA das Optimieren von VB/VBA Applikationen aufzeigen.Applikationen aufzeigen.

Office 2000 COM Add-InsOffice 2000 COM Add-InsWerkzeuge und OptimierungWerkzeuge und Optimierung

Page 3: Office 2000 COM Add-Ins Werkzeuge und Optimierung Tilo Böttcher Technical Specialist Microsoft GmbH

Was Sie heute erwartetWas Sie heute erwartet

Ein Überblick sowie die Klärung einiger Ein Überblick sowie die Klärung einiger FragenFragen Erweitern aber wie ?

Sicher (gegen Angriffe und unberechtigte Veränderungen) ?

Robust

Schnell (beim Start, beim Beenden, im Zugriff auf Datenbanken, Informationsaustausch etc.) ?

Wiederverwendbar – modular ?

Office 2000 COM Add-InsOffice 2000 COM Add-InsWerkzeuge und OptimierungWerkzeuge und Optimierung

Page 4: Office 2000 COM Add-Ins Werkzeuge und Optimierung Tilo Böttcher Technical Specialist Microsoft GmbH

AgendaAgenda

SR1a/OL 2000 Security Patch OverviewSR1a/OL 2000 Security Patch Overview

COM Add-In Entwicklung – Werkzeuge COM Add-In Entwicklung – Werkzeuge und Erfahrungenund Erfahrungen Überblick: COM Add-Ins mit VB/VBA sowie C++ und ATL

entwickeln

CodeoptimierungCodeoptimierung Kapselung

Eventhandling

Tipps

Page 5: Office 2000 COM Add-Ins Werkzeuge und Optimierung Tilo Böttcher Technical Specialist Microsoft GmbH

AgendaAgenda

SR1a/OL 2000 Security Patch OverviewSR1a/OL 2000 Security Patch Overview

COM Add-In Entwicklung – Werkzeuge COM Add-In Entwicklung – Werkzeuge und Erfahrungenund Erfahrungen Überblick: COM Add-Ins mit VB sowie C++ und ATL

entwickeln

CodeoptimierungCodeoptimierung Kapselung

Eventhandling

Tipps

Page 6: Office 2000 COM Add-Ins Werkzeuge und Optimierung Tilo Böttcher Technical Specialist Microsoft GmbH

Allgemeine FixesAllgemeine Fixes Outlook 2000 Migration von Win 9.x to W2K

Excel 2000 SYLK File Security Update

Excel Programmatic Text Export Update

WORM. Explore.Zip Virus Update

IE 5.0a auf IE 5.1 Update

System Komponenten Updates auf Windows 2000 Stand (incl. MDAC 2.1 auf 2.5, OleAut, Richedit, Windows Installer 1.0 auf 1.1, Web Folders, Jet).

PhotoDraw 2000 Version 2

SR1a/OL 2000 Security Patch OverviewSR1a/OL 2000 Security Patch Overview

Page 7: Office 2000 COM Add-Ins Werkzeuge und Optimierung Tilo Böttcher Technical Specialist Microsoft GmbH

Outlook 2000 Security PatchOutlook 2000 Security Patch Block All Access to the following potentially unsafe

attachment types: EXE, COM, URL, LNK, BAT, PIF, INF, REG, CMD, BAS, ISP, INS, CRT, PCD, MST, SCR, HLP, CHM, CPL, VBS, ASF, JS, MDB

Prevent script in One-off forms from executing. (no more prompt)

Always Bring up UI prompt for programmatic access to the Item.Send method in the Outlook Object Model

Always Bring up UI prompt for programmatic access to Address Book Entries, Contact Email Address, and Recipient information in Outlook

SR1a/OL 2000 Security Patch OverviewSR1a/OL 2000 Security Patch Overview

Page 8: Office 2000 COM Add-Ins Werkzeuge und Optimierung Tilo Böttcher Technical Specialist Microsoft GmbH

Was wurde für Developer im SR1a gefixt?Was wurde für Developer im SR1a gefixt?

Fixes in allen Bereichen (auch MDAC, IE, Fixes in allen Bereichen (auch MDAC, IE, WEB Server) ...WEB Server) ...einige Auszügeeinige Auszüge Allows multiple multi-threaded (MT) project types.

Forms3 setfocus works with Modal UserForms as expected.

Properly licenses when deploying a DLL with controls on a computer that does not have Office 2000 Developer Edition.

Updates to RichEdit control (RichEd20.dll) for improved text handling and display.

WebCalc retains data and format of cells as expected in scripts, applets, and other programming elements in Internet Explorer 5.

SR1a/OL 2000 Security Patch OverviewSR1a/OL 2000 Security Patch Overview

Page 9: Office 2000 COM Add-Ins Werkzeuge und Optimierung Tilo Böttcher Technical Specialist Microsoft GmbH

AgendaAgenda

SR1a/Security Patch OverviewSR1a/Security Patch Overview

COM Add-In Entwicklung – Werkzeuge COM Add-In Entwicklung – Werkzeuge und Erfahrungenund Erfahrungen Überblick: COM Add-Ins mit VB/VBA sowie C++ und ATL

entwickeln

CodeoptimierungCodeoptimierung Kapselung

Eventhandling

Tipps

Page 10: Office 2000 COM Add-Ins Werkzeuge und Optimierung Tilo Böttcher Technical Specialist Microsoft GmbH

COM Add-Ins mit VBA entwickelnCOM Add-Ins mit VBA entwickeln

COM Add-In Entwicklung – Werkzeuge und COM Add-In Entwicklung – Werkzeuge und ErfahrungenErfahrungen

Neues COM Add-In Projekt

DesignerMenüleisten, ButtonsWithEvents, Forms

Kompilierung/Registrierung(nur *.dll möglich)

Setup erstellen (Add-In) Verteilung

Offi

ce V

BA

ID

E

Page 11: Office 2000 COM Add-Ins Werkzeuge und Optimierung Tilo Böttcher Technical Specialist Microsoft GmbH

COM Add-Ins mit VB entwickelnCOM Add-Ins mit VB entwickeln

COM Add-In Entwicklung – Werkzeuge und COM Add-In Entwicklung – Werkzeuge und ErfahrungenErfahrungen

*.Exe

Designer konfigurieren (Impl. IDTExtensibility2)

Menüleisten, Buttons WithEvents, Forms

Kompilierung/Registrierung

Setup erstellen (Add-In)Verpackungs- und Weitergabeass. Verteilung

Vis

ual B

asi

c 6

.0

*.dll Add-In *.ocx

Page 12: Office 2000 COM Add-Ins Werkzeuge und Optimierung Tilo Böttcher Technical Specialist Microsoft GmbH

COM Add-Ins mit C++ und ATL entwickelnCOM Add-Ins mit C++ und ATL entwickeln

COM Add-In Entwicklung – Werkzeuge und COM Add-In Entwicklung – Werkzeuge und ErfahrungenErfahrungen

ATL COM Wizard

ATL COM Komponente

Verteilung

Vis

ual C

++

6.0

Registry IDTExtensibility2

Objektmodell von Office 2000 und verwendeter App importieren

Interaktion mit UI

Menüeinträge Buttons

Base Event Klassen

Sink Events Map

App Events handlen

TestKompilierung

Page 13: Office 2000 COM Add-Ins Werkzeuge und Optimierung Tilo Böttcher Technical Specialist Microsoft GmbH

AgendaAgenda

SR1a/Security Patch OverviewSR1a/Security Patch Overview

COM Add-In Entwicklung – Werkzeuge COM Add-In Entwicklung – Werkzeuge und Erfahrungenund Erfahrungen Überblick: COM Add-Ins mit VB/VBA sowie C++ und ATL

entwickeln

CodeoptimierungCodeoptimierung Kapselung

Eventhandling

Tipps

Page 14: Office 2000 COM Add-Ins Werkzeuge und Optimierung Tilo Böttcher Technical Specialist Microsoft GmbH

Verwendung von Klassen – KapselungVerwendung von Klassen – Kapselung Einfach weiterzuverwenden

Einfach zu Projekten hinzuzufügenEinfach zu Projekten hinzuzufügen Weniger Abhängigkeiten zwischen den ModulenWeniger Abhängigkeiten zwischen den Modulen

Macht Task Partitionierung und Spezialisierung möglich

Übersichtlicher: Verbirgt Teile komplexer Prozesse

Vereinfacht Entwicklung und Debugging

Codeverwaltung: Updates an zentraler Stelle nur einmal vonnöten

Mehrfache Instanzeierung möglich

CodeoptimierungCodeoptimierung

Page 15: Office 2000 COM Add-Ins Werkzeuge und Optimierung Tilo Böttcher Technical Specialist Microsoft GmbH

Verwendung von Klassen – KapselungVerwendung von Klassen – Kapselung Erzeugen einer Klasse

Einfügen eines KlassenmodulsEinfügen eines Klassenmoduls Sinnvollen Namen verwendenSinnvollen Namen verwenden InitializeInitialize und und TerminateTerminate Events handlen Events handlen Eigenschaften und Methoden festlegenEigenschaften und Methoden festlegen

Objekte instanzeieren

Objektvariablen festlegenObjektvariablen festlegen NewNew Schlüsselwort verwenden Schlüsselwort verwenden Zugriff auf Eigenschaften und MethodenZugriff auf Eigenschaften und Methoden

CodeoptimierungCodeoptimierung

Einfachste Eigenschaft

Public Variable im Klassenmodul

Methoden

Public procedure

Sub oder Function

Rückgabe von Werten möglich

Übergabe von Args möglich

Wird I. A. so verwendet

Page 16: Office 2000 COM Add-Ins Werkzeuge und Optimierung Tilo Böttcher Technical Specialist Microsoft GmbH

CodeoptimierungCodeoptimierung

Dim ObjektA as BeispielklasseA

Set ObjektA = New BeispielklasseA

.... Use Properties etc ...

Set ObjektA = Nothing

Page 17: Office 2000 COM Add-Ins Werkzeuge und Optimierung Tilo Böttcher Technical Specialist Microsoft GmbH

Verwendung von CollectionsVerwendung von Collections Manchmal wird eine unbekannte Anzahl an Objekten

benötigt ...

Eine Collection kann andere Objekte aufnehmen

Mit NEW kann eine neue Collection angelegt werden

MethodenMethoden Add – Hinzufügen eines ObjektesAdd – Hinzufügen eines Objektes Item (default) – Referenziert ein ObjektItem (default) – Referenziert ein Objekt Remove – Löscht ein ObjektRemove – Löscht ein Objekt

Count – EigenschaftCount – Eigenschaft Eigenschaften und Einschränkungen:

Collection löschen durch Neudefinition der Elemente Collection löschen durch Neudefinition der Elemente oder Nothing setzenoder Nothing setzen

Public/Global Collections können gefährlich seinPublic/Global Collections können gefährlich sein Keine Kontrolle über den Inhalt möglichKeine Kontrolle über den Inhalt möglich Kapselung in Klassen (Collection Class)Kapselung in Klassen (Collection Class) Collections bestehen aus impliziten ObjektpointernCollections bestehen aus impliziten Objektpointern

CodeoptimierungCodeoptimierung

Page 18: Office 2000 COM Add-Ins Werkzeuge und Optimierung Tilo Böttcher Technical Specialist Microsoft GmbH

CodeoptimierungCodeoptimierung

`Ansprechen von Items colItems.Item(1).MethodName colItems.Item(„Bär").MethodName

`Durchwandern der Collection For Each objItem in colItems objItem.MethodName Next

Page 19: Office 2000 COM Add-Ins Werkzeuge und Optimierung Tilo Böttcher Technical Specialist Microsoft GmbH

EventhandlingEventhandling WithEvents -- Eventsenken

VBA Schlüsselwort – erlaubt Reaktion auf ObjektEvents (COM)VB/VBA Objektbrowser stellt dies am besten darDeklaration einer Variablen „spiegelt“ das aktuelle Objekt

Private WithEvents obj As SomeObject

Muß in einem Klassenmodul oder Form vorgenommen werden, erkennbar auch im Editor mit Autoausfüllen-Menüs

CodeoptimierungCodeoptimierung

Page 20: Office 2000 COM Add-Ins Werkzeuge und Optimierung Tilo Böttcher Technical Specialist Microsoft GmbH

Eventhandling -- WithEventsEventhandling -- WithEvents

CodeoptimierungCodeoptimierung

Private Sub Class_Initialize() Set mobjExcelApp = New Excel.Application mobjExcelApp.Visible = TrueEnd Sub

Dim mobjExcelEvents As clsExcelEvents

Sub InitExcelEvents() Set mobjExcelEvents = New clsExcelEventsEnd Sub

1

2

Klassenmodul

Standardmodul

Page 21: Office 2000 COM Add-Ins Werkzeuge und Optimierung Tilo Böttcher Technical Specialist Microsoft GmbH

CodeoptimierungCodeoptimierung

Reguläres ModulReguläres ModulReguläres ModulReguläres Modul

KlassenModulKlassenModulKlassenModulKlassenModul

COM ServerCOM ServerCOM ServerCOM Server

Objektvariable

Objektvariable

Exponiertes Objekt

Ereignis Prozedur

Pointer auf das Pointer auf das KlassenModulKlassenModul

Pointer auf das ObjektPointer auf das Objekt

ObjectEvents triggernObjectEvents triggernProzeduren im Klassen-Prozeduren im Klassen-modulmodul

Private WithEvents objSomething _ As SomeObject

Private WithEvents objSomething _ As SomeObject

Sub objSomething_SomeEvent()

End Sub

Sub objSomething_SomeEvent()

End Sub

Page 22: Office 2000 COM Add-Ins Werkzeuge und Optimierung Tilo Böttcher Technical Specialist Microsoft GmbH

Eventhandling -- RaiseEventsEventhandling -- RaiseEvents Raising Events falls “eingebaute” Events nicht ausreichen

(seit VB 5)

Events im Deklarationsbereich festlegenEvents im Deklarationsbereich festlegen RaiseEvent Schlüsselwort im Code nutzenRaiseEvent Schlüsselwort im Code nutzen

Event Senken

Applikationen werden benachrichtigt, wenn Events Applikationen werden benachrichtigt, wenn Events eintreteneintreten

WithEvents in Klassenmodulen nutzenWithEvents in Klassenmodulen nutzen Formular-Modul ist am einfachsten (immer da)Formular-Modul ist am einfachsten (immer da)

CodeoptimierungCodeoptimierung

Page 23: Office 2000 COM Add-Ins Werkzeuge und Optimierung Tilo Böttcher Technical Specialist Microsoft GmbH

CodeoptimierungCodeoptimierung

Private Sub dbCtl1_validateRecord(ByVal operation As String, _ cancel As Boolean)

Dim msgString As StringDim iIndx As Integer

If (operation = "Save") Then If (Len(Text1.Text)<1) Then msgString = "Bitte einen Titel eingeben!" & vbCrLf msgString = msgString & "Speichern wurde abgebrochen" iIndex = MsgBox(msfString, vbCritical, _

"VB DataControl") Cancel = true Else Cancel = false End IfEnd IfEnd Sub

Public Event validateRecord(ByVal operation As String, ByRef cancel As Boolean)

RaiseEvent validateRecord("Add", bCancel)

1

2

3

Deklarationsteil im Klassenmodul

etwas später im Code

Page 24: Office 2000 COM Add-Ins Werkzeuge und Optimierung Tilo Böttcher Technical Specialist Microsoft GmbH

10 Tipps für die Optimierung von VB/VBA 10 Tipps für die Optimierung von VB/VBA COM Add-InsCOM Add-Ins

1. timeGetTime wesentlich schneller als die Timer Funktion

2. vbNullString anstelle von “” zur Initialisierung nutzen

3. String concatenation: Sehr teuer!!

4. Like Operator für Zeichenvergleich nutzen

5. Lif Konstrukte langsamer als IF ..THEN .. ELSE

CodeoptimierungCodeoptimierung

Page 25: Office 2000 COM Add-Ins Werkzeuge und Optimierung Tilo Böttcher Technical Specialist Microsoft GmbH

10 Tipps für die Optimierung von VB/VBA 10 Tipps für die Optimierung von VB/VBA COM Add-Ins (Cont.)COM Add-Ins (Cont.)

6. DoEvents kosten Zeit!

7. Case Statements unter VBA “vorsortieren”

8. For Each…Next wesentlich schneller als For … Next in einer Collection

9. Löschen einer Collection am schnellsten durch Pointer auf eine neue Collection setzen

10. Early Binding vs. Late Binding!

CodeoptimierungCodeoptimierung

Page 26: Office 2000 COM Add-Ins Werkzeuge und Optimierung Tilo Böttcher Technical Specialist Microsoft GmbH

Links und LiteraturLinks und Literatur

http://msdn.microsoft.com/officedev

http://officeupdate.microsoft.com

http://www.microsoft.com/germany/msdn

http://msdn.microsoft.com/library

http://www.vcdj.com

http://www.sliptstick.com

http://www.microeye.com

http://www.microsoft.com/germany/mspress

http://www.wrox.com (Professional ATL COM Programming by R. Grimes)