Microsoft Office. Outlook Add-in und Add-on Software.

 

 

 

 

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