Kontakt
DSVGO
Microsoft Word bietet eine integrierte Rechtschreibprüfung. Um nicht mit VB das Rad komplett neu zu erfinden (was hier bestimmt keine triviale Angelegenheit ist), empfiehlt sich die Nutzung von "OLE und ActiveX-Automation".
Die unten gezeigte CheckSpelling-Funktion macht genau dies. Aus Performance-Gründen wird ggf. das Word-Objekt in einer statischen Variablen zur Wiederverwendung abgelegt. Dadurch wird das Zeit-raubende Erzeugen eines neuen Word-Objekts eingespart, was z.B. auf meinem System (600Mhz) eine Beschleunigung um den Faktor 10 bringt.
'Prüfung auf Word/Rechtschreibprüfung: If CheckSpelling("Hallo") Then MsgBox "Rechtschreibprüfung ist verfügbar" Else MsgBox "Rechtschreibprüfung funktioniert nicht" End If 'Rechtschreibprüfung aufrufen: MsgBox CheckSpelling("Guten Tag") 'ergibt True MsgBox CheckSpelling("Guten Tak") 'ergibt False 'Word-Objekt aus Cache entfernen: CheckSpelling "", , False
Der folgende Code ist eigentlich ziemlich gradlinig; nur das optionale Caching des Word-Objekts macht die Sache etwas länglich:
Zuerst wird geprüft, ob im Cache noch eine Word-Instanz liegt. Falls nicht, so wird eine neue geschaffen und einige Optimierungen vorgenommen (s.a. "VBA-Performance steigern"). Dann wird einfach die Rechtschreibprüfung von Word aufgerufen. Soll das Word-Objekt nicht wiederverwendet werden (ReUse = False), so wird Word beendet und die Objekt-Referenz freigegeben.
Public Function CheckSpelling( _ ByRef Text As String, _ Optional ByVal IgnoreUpperCase As Boolean = True, _ Optional ByVal ReUse As Boolean = True _ ) As Boolean 'Word-Objekt ggf. wiederverwenden: Static wd As Word.Application On Error Resume Next If Len(Text) > 0 Then 'Ggf. neues Word-Objekt anlegen: If wd Is Nothing Then Set wd = New Word.Application wd.DisplayAlerts = wdAlertsNone wd.ScreenUpdating = False End If 'Rechtschreibprüfung aufrufen: CheckSpelling = wd.CheckSpelling(Text, , IgnoreUpperCase) Else 'Leerstring ist immer OK: CheckSpelling = True End If 'Ggf. Word-Instanz freigeben: If Not ReUse Then wd.Quit wdDoNotSaveChanges Set wd = Nothing End If On Error Goto 0 End Function
© Jost Schwider, 03.09.2001-03.09.2001 - http://vb-tec.de/spelling.htm