Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Excel-Funktionen verwenden

Excel bietet einen Riesenfundus an Funktionen, die in Access nicht standardmäßig zur Verfügung stehen. Zum Beispiel fehlt Access immer noch eine Funktion zum Runden von Zahlen. Zwar gibt es einige selbstgebastelten Routinen, die diese Aufgabe zufriedenstellend übernehmen, aber das Einbinden von Excel-Funktionen könnte dennoch interessant sein.

Zugriff auf die Excel-Objektbibliothek

Der erste Schritt auf dem Weg zur Zweckentfremdung von Excel-Funktionen ist, diese in Access verfügbar zu machen. Dazu müssen Sie die entsprechende Objektbibliothek in das VBA-Projekt der Access-Datenbank einbinden.

Um dies zu tun, rufen Sie in der VBA-Entwicklungsumgebung den Menüeintrag Extras/Verweise auf und aktivieren dort den Eintrag Microsoft Excel x.y Object Library (siehe Abbildung 1).

Abbildung 1: Einbinden der Excel-Objektbibliothek

Zugriff auf die Excel-Funktionen

Anschließend müssen Sie nur noch eine Wrapper-Funktion für die entsprechende Excel-Funktion schreiben. Das kann etwa wie in folgendem Beispiel aussehen:

Public Function Runden(Zahl As Double, Stellen As Integer)

    Dim objExcel As Excel.Application

    Set objExcel = New Excel.Application

    Runden = Excel.Application.WorksheetFunction.Round(Zahl, Stellen)

    objExcel.Quit

    Set objExcel = Nothing

End Function

In dieser Routine wird lediglich eine Excel-Instanz erzeugt, die Funktion Round aufgerufen (diese ist Bestandteil des Worksheet-Function-Objekts) und anschließend die Excel-Instanz wieder geschlossen.

Vor- und Nachteile

Mit dieser Vorgehensweise erhält man natürlich einen Riesenfundus an Funktionen. Das Erzeugen und Schließen der Excel-Instanz für jeden Aufruf ist allerdings sehr teuer: Wenn man absehen kann, dass in einer Anwendung öfter Excel-Funktionen verwendet werden, sollte man zu Beginn eine Instanz öffnen und diese beim Schließen der Datenbank wieder beenden.

 

 

© 2003-2010 André Minhorst Alle Rechte vorbehalten.