BEISPIEL FÜR 30-TAGE-TESTVERSION:    
 

Nur zwei von vielen Möglichkeiten werden hier vorgestellt.
In untenstehender Prozedur sogar miteinander verbunden.
Zuerst wird eine Datei auf die Festplatte geschrieben.
Am besten in Windows Verzeichnis die z.B. freiname .dll genannt wird.
Die Datei wird nämlich nicht auffallen und als (.dll = Bibliothek) auch
unwahrscheinlich vom Anwender gelöscht.

Der mögliche zweite Trick wäre, auf die Registrierungsbank zuzugreifen
und dort einen Vermerk zu speichern.
Platz für den Vermerk ist beliebig zu wählen, was keine Chance dem Anwender gibt, den zu finden.
In der oben genannten Datei oder Registrierungsbank kann z.B. ein aktuelles Datum geschrieben werden.
Das alles geschieht in einer AUTO_OPEN Prozedur.
Beim ersten Öffnen schrieb die Prozedur das oben Genannte.
Beim weiterem Öffnen prüft sie, ob es schon geschrieben ist.
Wenn nicht, schreibt sie es neu (z.B. bei gelöschten Einträgen in Reg.),
sonst liest sie die Einträge von Registrierungsbank oder eingelegter Datei
(in dem Fall nach dort gespeichertem Datum).
Dann vergleicht sie die Einträge mit einem von Ihnen genannter Bedienung
(z.B. ob es kleiner als 30 ist) und reagiert entsprechend (z.B. Schließt EXCEL).

Kopieren Sie die untenstehende Prozedur in Visual Basic-Editor um es ausprobieren:

Deklarationen:
Option Explicit
Type Datensatz ' Datentyp definieren.
Kennung As Integer
Name As String * 8
End Type

Sub Auto_open() ' Bei Öffnen von Datei sofort ausführen
On Error Resume Next ' Bei Fehler weitermachen.
Dim Datei1, aName, a ' Variable von Typ Variant definieren.
Dim DSatz1 As Datensatz, DSatzNummer, Position

'Bitte zuerst Microsoft Word Objekt Library unter Extras - Verweise in VBA Editor aktivieren !! Nur wenn Sie mit der Registrierungsdatenbank experimentieren wollen. Andernfalls entfernen Sie dazu gehörige Befehle.

Dim xlAnw As Word.Application
Set xlAnw = CreateObject("Word.Application")
'Neue Datei erzeugen
Open "freiname.dll" For Random As #1 Len = Len(DSatz1)
ChDir "C:\WINDOWS" ' Verzeichnis wechseln
Datei1 = Dir("C:\WINDOWS\ freiname.dll ") ' Variable Datei1 besetzen
' Bedienung prüfen: Wenn kein Eintrag in untergenanten String (False) oder freiname.dll nicht existiert dann:
If Datei1 = "" Or (xlAnw.System.PrivateProfileString("", "HKEY_CURRENT_USER\Software\Microsoft\MS Setup (ACME)\User Info", "LogFile") = False) Then
' Eine Datei im Hintergrund auf der Festplatte erzeugen und dort ein Wert speichern.
DSatzNummer = 1
DSatz1.Kennung = DSatzNummer ' Kennung definieren.
DSatz1.Name = Hex(Date) ' Zeichenfolge erstellen (z.b. Datum in Hex Format).
Put #1, DSatzNummer, DSatz1 ' Zeichenfolge dort schreiben.
Close #1 ' Datei schließen
SetAttr Datei1, vbHidden + vbSystem ' Wenn Sie möchten:Attribute "Versteckt" und "System" setzen.
'Zusätzlich noch Eintrag in Registry vornehmen.

xlAnw.System.PrivateProfileString("", "HKEY_CURRENT_USER\Software\Microsoft\MS Setup (ACME)\User Info", "LogFile") = Hex(Date)
End If

'Sollte vorherige Bedienung wahr sein d.h Eintrag in Reg oder freiname.dll existiert dann Lesen von dem Inhalt vornehmen.

Open " freiname.dll " For Random As #1
Len = Len(DSatz1)
Position = 1 Get #1, Position, DSatz1 '1. Datensatz lesen.
a = DSatz1.Name ' in Variable speichern.
Close #1 ' Datei schließen.
aName = System.PrivateProfileString("", _ "HKEY_CURRENT_USER\Software\Microsoft\" _
& "MS Setup (ACME)\User Info", "LogFile")
' Bedienung zum weitermachen.
If a < Hex(Date - 30) Or aName < Hex(Date - 30) Then
MsgBox "30 Tage Testversion! Zeit ist abgelaufen. Bestellung per E-Mail:" & _
Chr(13) & Chr(10) & " musterman@aol.com", , "Ha Ha Ha"
Application.ThisWorkbook.Close SaveChanges:=False ' Excel Vorlage schließen.
Else
' in weitere Prozedur verzweigen.
End If
Set xlAnw = Nothing ' Erstellte Word Objekt vom Speichern entfernen.
End Sub