Feiertage berechnen und berücksichtigen - Teil 2

15.08.2006 von Helma  Spona
Neben Feiertagen die sich berechnen lassen, gibt es auch solche, deren Termine feststehen. Diese Feiertage können Sie in einer Tabelle oder Textdatei erfassen und dann ebenfalls berücksichtigen. Wie das geht und wie Sie dann auch die fertige Klasse anwenden, erfahren Sie in diesem zweiten Teil der Artikelfolge.

Zur Erfassung der Feiertage gibt es im Prinzip zwei Möglichkeiten: Sie verwenden eine Datenbanktabelle oder eine Textdatei mit Trennzeichen. Die Textdatei bietet sich vor allem an, wenn Sie die Klasse auch in anderen VBA-Hostanwendungen nutzen möchten. In Access haben Tabellen natürlich den Vorteil, dass Sie sie einfach abfragen können. Allerdings setzt das dann voraus, dass Sie diese Tabelle immer erst in der Datenbank erstellen, in der Sie die Klasse nutzen möchten.

Daher wird trotz der Vorteile, die Tabellen bieten, nachfolgend der Umgang mit einer Textdatei mit Trennzeichen gezeigt. Das hat dann den positiven Nebeneffekt, dass Sie die Klasse ohne Einschränkungen auch in Word oder Excel nutzen können. Sie müssen sie dann nur in das Verzeichnis der Datenbank, Excel- oder Word-Datei kopieren, in der Sie die Klasse verwenden möchten.

Aufbau der Textdatei

Um den Namen des Feiertags ermitteln und ihn bei Bedarf auch einem Land zuordnen zu können, benötigen Sie vier Spalten in der Textdatei. In die ersten beiden schreiben Sie das Datum des Feiertags, bestehend aus dem Tag des Monats in der ersten und dem Monat in der zweiten Spalte. Die dritte Spalte enthält den Namen des Feiertags, und die vierte das Land, beispielsweise Deutschland oder ein Kürzel wie "D" für das Land, in dem es den Feiertag gibt. Die einzelnen Spalten trennen Sie durch Semikolons ab. Das Datum geben Sie in der Form TT;MM, also ohne Jahresangabe ein. Die ist nicht notwendig, weil der Feiertag ja in jedem Jahr gültig ist.

Den Namen der Datei können Sie frei wählen. Sie übergeben ihn später zusammen mit dem Pfad an die Klasse. Wichtig ist allerdings, dass Sie die Datei als Textdatei speichern und jeder Datensatz in einer separaten Zeile steht.

Textdatei lesen und in ein Array schreiben

Als Erstes benötigen Sie nun Code, der die Textdatei öffnet und ausliest. Damit Sie später nicht bei jedem Zugriff auf einen festen Feiertag wieder die Datei öffnen müssen, werden die einmal gelesenen Daten in ein Array geschrieben. Dieses wird zunächst auf Modulebene im Klassenmodul definiert, und zwar als dynamisches Array des Typs FTag.

Bild 1: Aufbau der Textdatei.

FTag ist ein benutzerdefinierter Datentyp, der ebenfalls auf Modulebene definiert wird. Da öffentliche Datentypen in Klassenmodulen nicht zulässig sind, müssen Sie hier zwingend das Schlüsselwort Private verwenden (Listing 1).

Dim arrFTage() As FTag
Dim typFTag As FTag
Private Type FTag
Tag As Byte
Monat As Byte
Name As String
Land As String
End Type

Zum Lesen der Datei reicht eine private Prozedur, der Sie den Dateinamen einschließlich des Pfads der Textdatei übergeben (Listing 2). Innerhalb dieser Prozedur öffnen Sie die Textdatei und lesen sie in einer Schleife zeilenweise aus. Jede Zeile splitten Sie mit Hilfe der Split-Funktion in ein Array, dessen Werte Sie dann den entsprechenden Feldern des benutzerdefiniertem Typs zuweisen. Danach speichern Sie den Wert der Variablen typFTag in einem leeren Feld des Arrays und vergrößern das Array, damit auch die nächste Zeile gespeichert werden kann.

Private Sub FeiertageLesen(strDateiname As String)
Dim lngDatei As Long
Dim strFehler As String
Dim strZeile As String
Dim varZeile As Variant
Dim lngZeile As Long
On Error GoTo FEHLER
lngDatei = FreeFile()
Open strDateiname For Input As #lngDatei ' Datei öffnen.
'Auslesen der Einträge und einfügen in das Array
ReDim arrFTage(1)
lngZeile = -1
Do While Not EOF(lngDatei) ' Schleife bis Dateiende.
Input #lngDatei, strZeile
If Trim(strZeile) > "" Then
On Error Resume Next
varZeile = Split(strZeile, ";")
typFTag.Tag = varZeile(0)
typFTag.Monat = varZeile(1)
typFTag.Name = varZeile(2)
typFTag.Land = varZeile(3)
On Error GoTo FEHLER
End If
'Array vergrößern
lngZeile = lngZeile + 1
arrFTage(lngZeile) = typFTag
ReDim Preserve arrFTage(UBound(arrFTage) + 1)
Debug.Print strZeile
Loop
Close #lngDatei
'Texdatei öffnen
Exit Sub
FEHLER:
If Err.Number = 52 Then
strFehler = "Die Datei " & strDateiname & _
" ist nicht vorhanden oder kann nicht geöffnet werden!"
End If
'Debug.Print Err.Number & ": " & Err.Description
If strFehler > "" Then
On Error Resume Next
MsgBox strFehler
Close #lngDatei
Exit Sub
End If
End Sub

Prüfen, ob ein Datum ein fester Feiertag ist

Die Methode, die prüft, ob ein bestimmter Tag ein fester Feiertag ist, muss nun das Array durchlaufen und prüfen, ob das zu prüfende Datum im Array vorkommt. Wichtig ist, dass die Methode erst aufgerufen wird, wenn das Array gefüllt ist. Das können Sie am einfachsten sicherstellen, wenn die Methode dies zuvor prüft und ansonsten die Prozedur FeiertageLesen aufruft (Listing 3).

Public Function FixFeiertag(datDatum As Date, _
strDateiname As String, Optional strLand) As String
'Prüft ob es sich bei dem Datum um einen fixen Feiertag handelt
'Falls ja, wird der Name des Feiertags zurückgegeben
Dim bytFehler As Byte
Dim bytTag As Byte
Dim bytMonat As Byte
Dim lngZage
bytFehler = 0
FixFeiertag = ""
On Error GoTo FEHLER
If UBound(arrFTage) >= 0 Then
'Array durchsuchen
bytTag = Day(datDatum)
bytMonat = Month(datDatum)
For lngZeile = LBound(arrFTage) To UBound(arrFTage)
typFTag = arrFTage(lngZeile)
If IsMissing(strLand) Then
If (bytTag = typFTag.Tag) And (bytMonat = typFTag.Monat) Then
FixFeiertag = typFTag.Name
Exit For
End If
Else
If (bytTag = typFTag.Tag) And (bytMonat = typFTag.Monat) _
And (strLand = typFTag.Land) Then
FixFeiertag = typFTag.Name
Exit For
End If
End If
Next lngZeile
End If
Exit Function
FEHLER:
bytFehler = bytFehler + 1
If Err.Number = 9 Then
If bytFehler = 1 Then
FeiertageLesen strDateiname
Resume
Else
Exit Function
End If
End If
End Function

Zunächst sorgt die Anweisung On Error Goto FEHLER dafür, dass bei einem Laufzeitfehler zur Fehler-Marke gesprungen wird. Das ist wichtig, weil bei einem noch nicht initialisierten Array das Abrufen der oberen Indexgrenze mit ubound einen Laufzeitfehler verursacht. Anhand dieses Fehlers können Sie aber erkennen, dass das Array noch gefüllt werden muss. Dazu fragt die Fehlerbehandlungsroutine die Fehlernummer ab. Ist dies die Zahl 9, war das Array noch nicht initialisiert und die Prozedur FeiertageLesen wird aufgerufen. Sollte die Fehlerbehandlungsroutine zweimal aufgerufen werden, wird die Funktion mit Exit Sub verlassen. Kann die Funktion nach der Fehlerbehandlung oder weil kein Fehler aufgetreten ist fortgesetzt werden, wird das Array durchsucht. Dazu wird zunächst aus dem Parameter datDatum der Tag und der Monat ermittelt und in zwei Variablen gespeichert. Danach durchläuft eine Schleife das Array. Für den Fall, dass der optionale Parameter strLand nicht übergeben wurde, wird nur geprüft, ob Monat und Tag des aktuellen Array-Eintrags mit den Werten in den beiden Variablen übereinstimmen. Wird zusätzlich das Land angegeben, wird auch dieses in die Prüfung einbezogen. Innerhalb der If-Verzweigungen wird dann der Name des Feiertags als Rückgabewert festgelegt. Wird keine Übereinstimmung gefunden, gibt die Funktion eine leere Zeichenfolge zurück.

Methode anpassen

Da die Funktion FixFeiertag gegenüber der ursprünglichen Planung aus dem ersten Teil der Artikelfolge um einen Parameter für den Dateinamen ergänzt wurde, müssen Sie die bereits definierte Methode IstFeiertag dahingehend anpassen, dass Sie den Else-Zweig aus der Methode löschen, wie dies in Listing 6 geschieht.

Public Function IstFeiertag(ByRef datDatum As Date, ByRef strName As String) _
As Boolean
...
ElseIf Muttertag(lngJahr) = datDatum Then
strName = "Muttertag"
IstFeiertag = True
End If
End If
End Function

Methoden zum Erfassen von Feiertagen

Wenn Sie dem Benutzer der Anwendung, der die Klasse verwendet, die Möglichkeit geben möchten, feste Feiertage über ein Formular oder eine UserForm zu erfassen, sollten Sie dazu schon in der Klasse eine Methode vorsehen, die an die Textdatei eine Zeile mit neuen Werten anhängt. Diese Methode soll hier FeierTagSchreiben lauten (Listing 4). Ihr übergeben Sie die zu schreibenden Werte für die einzelne Spalte sowie den Dateinamen und den Pfad der Textdatei. Die Methode schreibt diese Daten dann in die Textdatei.

Public Sub FeierTagSchreiben(strDateiname As String, _
bytTag As Byte, bytMonat As Byte, strName As String, strLand As String)
Dim lngDatei As Long
Dim strFehler As String
Dim strZeile As String
Dim varZeile As Variant
Dim lngZeile As Long
Dim bytFehler As Byte
bytFehler = 0
On Error GoTo FEHLER
lngDatei = FreeFile()
Open strDateiname For Append As #lngDatei ' Datei öffnen.
'Textdatei öffnen und Daten schreiben
Print #lngDatei, bytTag & ";" & bytMonat & ";" & strName & ";" & strLand
Close #lngDatei
Exit Sub
FEHLER:
bytFehler = bytFehler + 1
If Err.Number = 52 Then
strFehler = "Die Datei " & strDateiname & _
" ist nicht vorhanden oder kann nicht geöffnet werden!"
ElseIf Err.Number = 55 Then
If bytFehler < 5 Then
Resume
Else
strFehler = "In die Datei konnte nicht geschrieben werden!"
End If
End If
If strFehler > "" Then
On Error Resume Next
MsgBox strFehler
Close #lngDatei
Exit Sub
End If
End Sub

Dazu wird die Datei zunächst mit der Open- Anweisung zum Anhängen von Daten (For Append) geöffnet. Die übergebenen Daten werden nun mit der Print-Anweisung ausgegeben, danach wird die Datei mit Close geschlossen.

Prüfen, ob ein Datum ein Feiertag ist

Nun benötigen Sie noch eine Methode die prüft, ob ein gegebenes Datum ein Feiertag ist. Dazu müssen die beiden Methoden aufgerufen werden, mit denen Sie ein Datum auf einen festen oder berechneten Feiertag prüfen.

Da Sie zur Prüfung mit der Methode FixFeiertag den Namen und Pfad der Textdatei übergeben müssen, ist es sinnvoll, diesen Parameter in der Methode Feiertag als optional zu definieren. Berücksichtigen Sie dabei, dass der gleiche Tag sowohl ein berechneter, variabler Feiertag wie auch ein fester Feiertag sein kann. Das heißt, es könnte sein, dass beide Methoden einen Feiertag zurückgeben, sodass Sie die Rückgabewerte beider Methoden aneinander hängen sollten. Ein gutes Beispiel dafür ist Heiligabend 2006. Der fällt auf einen Sonntag und ist damit identisch mit dem berechneten 4. Advent.

Public Function Feiertag(datDatum As Date, Optional strDateiname) As String
Dim strFTagname As String
strFTagname = ""
If IsDate(datDatum) Then
'Prüfen, ob es sich um einen variablen Feiertag handelt
If IstFeiertag(datDatum, strFTagname) = True Then
Feiertag = strFTagname
End If
'Prüfen, ob es ein fixer Feiertag ist
If Not (IsMissing(strDateiname)) Then
Feiertag = Feiertag & " " & FixFeiertag(datDatum, CStr(strDateiname))
End If
Feiertag = Trim(Feiertag)
End If
End Function

Hilfsmethoden

Es ist für den Benutzer der Klasse nicht gerade günstig, wenn er den Namen und den Pfad der Textdatei immer mit angeben muss, zumal ja der Pfad der Textdatei auf dem Zielrechner von dem auf dem Rechner des Entwicklers abweichen kann. Daher stellt die Klasse zusätzliche Methoden zur Verfügung, mit denen Sie den Pfad der Datenbank ermitteln können, einen Pfad und einen Dateinamen zu einer kompletten Verzeichnisangabe zusammensetzen und prüfen können, ob eine Datei vorhanden ist. Die Rückgabewerte dieser Methoden können dann bequem an die anderen Methoden übergeben werden. Auf diese Weise sind Pfade zur Textdatei möglich, die relativ zum Pfad der Datenbank angegeben werden.

ublic Function buildPath(strPfad As String, _
strName As String) As String
If Right(strPfad, 1) = "\" Then
strPfad = Mid(strPfad, 1, Len(strPfad) - 1)
End If
If Left(strName, 1) = "\" Then
strName = Mid(strName, 2)
End If
buildPath = strPfad & "\" & strName
End Function
Public Function fileExists(strDatei As String)
If Dir(strDatei) <> "" Then
fileExists = True
Else
fileExists = False
End If
End Function
Public Function getPfad() As String
If Application.Name = "Microsoft Access" Then
getPfad = Left(CurrentDb.Name, Len(CurrentDb.Name) - _
Len(Dir(CurrentDb.Name)))
ElseIf Application.Name = "Microsoft Word" Then
getPfad = ThisDocument.Path
ElseIf Application.Excel = "Microsoft Excel" Then
getPfad = Thisworkbook.Path
Else
getPfad = ""
End If
End Function

Die Klasse anwenden

Damit sind nun alle Methoden der Klasse erstellt. Die Anwendung und Nutzung der Klasse vollzieht sich mehreren Schritten:

Zunächst müssen Sie also in die Datenbank, in der Sie die Klasse nutzen möchten, den Code der Klasse importieren.

  1. Öffnen Sie dazu die Datenbank, in der Sie die Klasse nutzen möchten, und wechseln Sie mit [Alt]+[F11] in die Entwicklungsumgebung.

  2. Wählen Sie Datei/Datei importieren aus, und markieren Sie die Codedatei clsFeiertage.cls mit dem Code der Klasse.

  3. Kopieren Sie nun bei Bedarf noch die Textdatei mit den Feiertagen in das Verzeichnis der Datenbank. Falls Sie das nicht machen, wird die Datei aber automatisch erstellt, wenn Sie die Methode FeiertagSchreiben aufrufen.

Bild 2: Die importierte Klasse wird im Projekt- Explorer angezeigt.

Als Nächstes müssen Sie aus der Klasse ein Objekt erzeugen, um die Methoden der Klasse aufrufen zu können. Beispielhaft zeigt das der Code in Listing 8. Diesen Code können Sie sowohl innerhalb eines Formulars oder Berichts als auch in einem normalen Modul verwenden.

Sub KlasseTesten()
Dim objFT As clsFeiertage
Dim strName As String
Set objFT = New clsFeiertage
Debug.Print "Ostersonntag: " & objFT.Ostersonntag(2006)
Debug.Print "Karfreitag: " & objFT.Karfreitag(2006)
Debug.Print "Pfingstmontag: " & objFT.Pfingstmontag(1006)
Debug.Print "1.Advent: " & objFT.Advent1(2007)
Debug.Print "Buß- und Bettag: " & objFT.Bussundbettag(2006)
Debug.Print "5. Sonntag im Februar: " & objFT.SonntagImMonat(2006, 2, 5)
strName = ""
Debug.Print "16.04.2006 ein Feiertag?" & objFT.istFeiertag(#4/16/2006#, str-
Name);
Debug.Print "Wenn ja, welcher?: " & strName
Debug.Print objFT.IstSonntag(#4/2/2006#)
Debug.Print objFT.IstSamstag(#4/1/2006#)
Debug.Print objFT.getPfad()
objFT.FeierTagSchreiben objFT.buildPath(objFT.getPfad(), "feiertage1.txt"), _
24, 12, "Heiligabend", "D"
Debug.Print objFT.Feiertag(#5/1/2006#)
Debug.Print objFT.Feiertag(#12/24/2006#, _
objFT.buildPath(objFT.getPfad(), "feiertage1.txt"))
Set objFT = Nothing
End Sub

Erzeugen des Objekts

Das Objekt erzeugen Sie wahlweise mit der CreateObject-Funktion oder wie im Beispielcode mit der New-Anweisung. Als Name der Klasse geben Sie den Namen des Moduls an, in dem sich die Klasse befindet. Danach können Sie die Methoden der Klasse aufrufen, wie Sie dies bei anderen Objekten auch tun. Im Beispiel wird der Aufruf einiger Methoden gezeigt.

Besonderheiten gibt es nur bei wenigen. Beispielsweise gibt die Methode IstFeiertag einen booleschen Wert zurück, an dem Sie erkennen können, ob es sich bei dem angegebenen Datum um einen berechneten Feiertag handelt. Wenn Sie auch den Namen des Feiertags ermitteln wollen, müssen Sie dazu eine Variable des Typs String (hier strName ) deklarieren und ihr eine leere Zeichenfolge zuweisen. Diese übergeben Sie dann als zweiten Parameter an die Methode. Nach Aufruf der Methode enthält die Variable den Namen des Feiertags, sofern es sich um einen Feiertag handelt.

Die Methode BuildPath können Sie verwenden, um Dateiname und Pfadangabe zu einem gültigen Pfad zusammenzusetzen. Sie ergänzt bei Bedarf fehlende Pfadtrennzeichen und löscht doppelte. Als ersten Parameter übergeben Sie dazu den Pfad und dann den Dateinamen.

Ganz wichtig ist, dass Sie am Ende das Objekt wieder löschen, indem Sie der Objektvariablen den Wert Nothing zuweisen.

Verwenden der Klasse in Word und Excel

Damit Sie die Klasse auch in Word und Excel verwenden können, wird der Datenbankpfad in der Methode getPfad nur zurückgegeben, wenn es sich bei der VBA-Hostanwendung um Access handelt. Für Excel und Word gibt die Funktion entsprechend dem Pfad der Arbeitsmappe oder des Word-Dokuments zurück, in dem der Code ausgeführt wird. Selbstverständlich können Sie die Method auch so erweitern, dass sie auch in PowerPoint, Publisher, Outlook oder Corel Draw funktioniert.

Die Methoden im Überblick

Für eine effiziente Nutzung der Klasse ist es wichtig, dass Sie wissen, wie die einzelnen Methoden anzuwenden sind und welche Werte sie zurückgeben. Eine Übersicht über die Schnittstellen- Elemente der Klasse enthält Tabelle 1.

Tabelle 1: Öffentliche Member der Klasse.

Methodendeklaration

Beschreibung

Function Ostersonnta (lngJahr As Long) As Variant

Gibt das Datum des angegebenen Jahres zurück, auf das der Ostersonntag fällt.

Function Ostermonta (lngJahr As Long) As Variant

Gibt das Datum des angegebenen Jahres zurück, auf das der Ostermontag fällt.

Function Karfreitag(lngJahr As Long) As Variant

Ermittelt das Datum von Karfreitag des angegebenen Jahres und gibt es zurück.

Function Pfingstsonnta (lngJahr As Long) As Variant

Berechnet das Datum von Pfingstsonntag und gibt es zurück.

Function Pfingstmonta (lngJahr As Long) As Variant

Gibt das Datum von Pfingstmontag zurück

Function Rosenmonta (lngJahr As Long) As Variant

Ermittelt das Datum des Jahres, auf das Rosenmontag fällt, und gibt dieses zurück.

Function Fastnacht(lngJahr As Long) As Variant

Gibt das Datum von Karnevals-Dienstag zurück.

Function Aschermittwoch(lngJahr As Long) As Variant

Berechnet das Datum von Aschermittwoch des angegebenen Jahres und gibt es zurück.

Function Himmelfahrt(lngJahr As Long) As Variant

Ermittelt den Termin von Himmelfahrt und gibt ihn für das angegebene Jahr zurück.

Function Fronleichnam(lngJahr As Long) As Variant

Berechnet das Datum von Fronleichnam und gibt es zurück.

Function Advent1(lngJahr As Long) As Date

Ermittelt das Datum des ersten Advents und gibt es zurück

Function Advent2(lngJahr As Long) As Variant

Ermittelt das Datum des zweiten Advents und gibt es zurück.

Function Advent3(lngJahr As Long) As Variant

Ermittelt das Datum des dritten Advents und gibt es zurück.

Function Advent4(lngJahr As Long) As Variant

Ermittelt das Datum des vierten Advents und gibt es zurück.

Function Bussundbettag(lngJahr As Long) As Variant

Berechnet den Termin von Buß- und Bettag und gibt ihn zurück

Function Volkstrauertag(lngJahr As Long) As Variant

Ermittelt das Datum an dem der Volkstrauertag liegt und gibt es zurück.

Function Totensonntag(lngJahr As Long) As Variant

Berechnet den Termin von Totensonntag und gibt diesen zurück.

Function SonntagImMonat(lngJahr As Long, bytMonat As Byte, bytSonntag As Byte) As Variant

Gibt das Datum des ersten, zweiten, dritten, vierten oder fünften Sonntag des Monats zurück. Dazu übergeben Sie nacheinander das Jahr, den Monat und die Nummer des Sonntags, also beispielsweise 5, wenn Sie den fünften Sonntag im Monat zurückgeben möchten. Falls es den angegebenen Sonntag in dem genannten Monat nicht gibt, gibt die Funktion eine entsprechende Feldermeldung zurück. Sie können also den Rückgabewert beispielsweise mit isDate prüfen. Handelt es sich um ein Datum, dann gibt es den nachgefragten Sonntag.

Function Erntedank(lngJahr As Long) As Date

Ermittelt den Termin des Erntedank-Festes und gibt diesen zurück.

Function Muttertag(lngJahr As Long) As Date

Ermittelt den Termin von Muttertag und gibt ihn zurück.

Function IstFeiertag(ByRef datDatum As Date,
yRef strName As String) As Boolean

Prüft, ob das angegebene Datum ein variabler Feiertag ist. Über den zweiten Parameter können Sie im Anschluss an den Funktionsaufruf abrufen, um welchen Feiertag es sich handelt, falls die Funktion True zurückgegeben hat.

Function IstSonntag(datDatum As Date) As Boolean

Gibt True zurück, wenn das angegeben Datum auf einen Sonntag fällt.

Function IstSamstag(datDatum As Date) As Boolean

Gibt True zurück, wenn das angegeben Datum auf einen Samstag fällt.

Function FixFeiertag(datDatum As Date,
strDateiname As String, Optional strLand) As String

Gibt den Namen des festen Feiertags zurück, falls das angegebene Datum auf einen festen Feiertag entfällt. Geben Sie den optionalen dritten Parameter nicht an, wird das Land nicht berücksichtigt.

Sub FeiertagSchreiben(strDateiname As String,

Schreibt die als Parameter übermittelten Daten zu einem festen Feiertag in

bytTag As Byte, bytMonat As Byte, strName As String,strLand As String)

die Textdatei, deren Dateiname und Pfad Sie als ersten Parameter angeben. Ist die Textdatei nicht vorhanden, wird sie erstellt.

Function Feiertag(datDatum As Date, Optional strDateiname) As String

Gibt den Namen des Feiertags zurück, dessen Datum übergeben wird. Falls auf das Datum kein Feiertag entfällt, gibt die Methode eine leere Zeichenfolge zurück. Lassen Sie den optionalen zweiten Parameter weg, werden nur die beweglichen Feiertage berücksichtigt, andernfalls auch alle festen Feiertage, die in der Datei gespeichert sind.

Function buildPath(strPfad As String, strName As String) As String

Setzt aus den beiden übergebenen Parametern eine vollständige Pfadangabe zusammen und ergänzt dabei fehlende Pfadtrennzeichen.

Function fileExists(strDatei As String) As Boolean

Gibt True zurück, wenn die angegebene Datei vorhanden ist, andernfalls False.

Function getPfad() As String

Gibt den Pfad der aktuellen Datenbank, des Word-Dokuments oder der Arbeitsmappe zurück, die den Code ausführt.

Zusammenfassung

Die Klasse ist denkbar einfach einzusetzen. Sie können damit nicht nur problemlos Feiertage berechnen, sondern eben auch Datumsangabenprüfen. Sie lässt sich daher flexibel auch in anderen Office-VBA-Anwendungen einsetzen.