VBA;
Programmierung mit Outlook - Visual Basic 6
|
Richtige Add-Ins
Macros sind zwar ganz praktisch, aber wenn man ein
50-Dateien Macro auf 500 Computern verteilen möchte,
wird man die Dinger verfluchen lernen, egal wie toll das
ist.
Ein Add-In wird Kompiliert und besteht hinterher nur
noch aus einer einzigen DLL, diese kann per REGEDIT oder
per Setup einfach installiert und in Outlook einfach
ein- und ausgeschaltet werden.
Da wir nicht über Anpassen die Tool Bars, Knöpfe,
Menüs usw. hinzufügen wollen, muss dies alles im Code
geschehen. Nach diesen Vorarbeiten können die gleichen
Dateien, welche auch in der Scriptumgebung von Outlook
laufen, direkt importiert werden, die Programme arbeiten
also komplett ohne Änderung sowohl in Visual Basic 6 als
auch in Outlook.
Benötigt wird
Microsoft Visual Basic oder Visual Studio Version 6.
Inzwischen gibt es Visual Basic 2005, Visual Basic 6 ist
etwas veraltet, von der Sprache her ist es aber der
große Bruder zu VBA. Hier können alle Dinge absolut
unverändert übernommen werden. Visual Basic ist
kommerzielle Software und muss erworben werden, ab und
zu findet man Autorenversionen auf Computerzeitschriften
oder in Büchern, eventuell auch als Download.
Später werden wir das gleiche noch einmal mit Visual
Basic 2005 machen.
Start
Es gibt in VB 2 Möglichkeiten ein Add-In zu
konfigurieren, entweder als Add-In Projekt oder als ActiveX DLL.
Add-In ist einfacher, da wir uns hier nicht um die
Registrierung und andere Details kümmern müssen. Also
neues Projekt und Add-In auswählen:
Es wird
ein Designer erstellt und ein Formular, das Formular
kann weg, wir wollen nur den Designer haben, hier können
wir die Felder so eintragen, wie wir es haben wollen.
Als
nächstes das frmAddIn löschen und von Connect "View
Code" auswählen, den ganzen Code löschen und ersetzen
durch: Option Explicit
' Genau wie in Outlook,
benötigen wir ein Application-Objekt. Dieses ist genau
wie in der Outlook-Umgebung
' ein Outlook.Application
Dim Application As Object
' Als nächstes benötigen wir
für jeden Knopf, Menüpunkt usw. ein Objekt mit
Ergeignissen
Dim WithEvents BtnSetProjekt As
Office.CommandBarButton
Dim WithEvents BtnCalcTask As Office.CommandBarButton
'
------------------------------------------------------------------------------
' Add a button to the command bar
'
------------------------------------------------------------------------------
Private Function AddButton(cmdbar As CommandBar, _
AddInInst As Object, _
name As String, tag As String, _
style As MsoButtonStyle) '
Outlook speichert die Knöpfe, daher müssen wir immer
erst nachsehen, ob der Knopf bereits vorhanden ist
Dim MyButton As Office.CommandBarButton
On Error Resume Next
Set MyButton = Nothing
Set MyButton = cmdbar.Controls.Item(name)
On Error GoTo 0
If MyButton Is Nothing Then Set MyButton = cmdbar.Controls.Add(1)
With MyButton
.Caption = name
.style = style
.tag = tag
.OnAction = "!<" & AddInInst.ProgId & ">" ' In
case our addin is not loaded, it can be loaded
.Visible = True
End With
Set AddButton = MyButton
End Function
'
------------------------------------------------------------------------------
'
------------------------------------------------------------------------------
' Add-In startet. Erstelle Tool
Bar und Buttons
'
------------------------------------------------------------------------------
Private Sub AddinInstance_OnConnection( _
ByVal app As Object, _
ByVal ConnectMode As
AddInDesignerObjects.ext_ConnectMode, _
ByVal AddInInst As Object, _
custom() As Variant)
Dim cmdbar As Object
Dim cmdbars As CommandBars '
Setzen der Applikation, dem Objekt, welches von den
Outlook-Macros verwendet wird
Set Application = app ' In Outlook sind die
CommandBars nicht in der Applikation sondern im ersten
Explorer Set cmdbars =
Application.Explorers.Item(1).CommandBars
Set cmdbar = cmdbars.Add(name:="Quester", Position:=msoBarTop,
Temporary:=True)
cmdbar.Visible = True
cmdbar.Position = msoBarBottom '
Knöpfe hinzufügen, in diesem Fall die Knöpfe der
Projektverwaltung.
Set BtnSetProjekt = AddButton(cmdbar, AddInInst, "SetProjekt", _
"Set Project to selection", msoButtonCaption)
Set BtnCalcTask = AddButton(cmdbar, AddInInst, "CalcTask", _
"CalcTask", msoButtonCaption)
End Sub
'
------------------------------------------------------------------------------
' Add-In Beeendet, entsorge alle
Elemente
'
------------------------------------------------------------------------------
Private Sub AddinInstance_OnDisconnection(ByVal
RemoveMode As _
AddInDesignerObjects.ext_DisconnectMode, custom() As
Variant)
On Error Resume Next
BtnCalcTask.Delete
BtnSetProjekt.Delete
Set BtnCalcTask = Nothing
Set BtnSetProjekt = Nothing
Set Application = Nothing
End Sub
'
------------------------------------------------------------------------------
' Buttons werden aufgerufen
'
------------------------------------------------------------------------------
Private Sub BtnCalcTask_Click(ByVal Ctrl As
Office.CommandBarButton, CancelDefault As Boolean)
CalcTask
End Sub
Private Sub BtnSetProjekt_Click(ByVal Ctrl As
Office.CommandBarButton, CancelDefault As Boolean)
SetProjekt
End Sub
In das Projekt können jetzt die gleichen Dateien
hinzugefügt werden, welche wir auch in Outlook verwendet
haben. Kompilieren
und Testen
Wenn alle Dateien vorhanden sind, wird die
DLL kompiliert (Datei MyAddIn erstellen) und mit
RegSvr32 registriert (DLL Doppelt anklicken und
c:\windows\system32\regsvr32 als Programm
auswählen). Wenn Outlook gestartet wird, wird es das
Add-In laden. Um es im Debugger testen zu können,
einfach vorher in Visual Basic das Programm durch F5
starten und danach Outlook.
Download
ProjektAddIn.zip enthält
alle VB-Dateien sowie das Kompilierte Add-In
|