Rechtschreibprüfung umschalten

Zuletzt geändert am 03. April 2013

Wer viel in 2 oder mehr Sprachen per E-Mail kommuniziert, wird des Umschaltens der Rechtschreibprüfung bald überdrüssig. Doch mit etwas Code kann man eine Umschaltung der Rechtschreibprüfung zwischen mehreren Sprachen per Mausklick erreichen.

Zur Verwendung dieses Beispiels beachten Sie bitte die wichtigen Hinweise, sowie den Workshop VBA in Outlook® verwenden. Den Code bitte in ein neues Modul kopieren (Einfügen -> Modul im VBA-Editor).

Für Outlook® 2000, Outlook® 2002 und Outlook® 2003 - VB-Skript erforderlich

Option Explicit
 
Public Sub SetGermanSpelling()
    ' Deutsche Rechtschreibprüfung einstellen
    Call SetSpelling("Deutsch")
End Sub
 
Public Sub SetEnglishSpelling()
    ' Englische Rechtschreibprüfung einstellen
    Call SetSpelling("Englisch")
End Sub
 
Public Sub SetFrenchSpelling()
    ' Französische Rechtschreibprüfung einstellen
    Call SetSpelling("Französisch")
End Sub
 
Private Sub SetSpelling(ByVal strLanguage As String)
 
    '=====================================================================
    ' Schaltet die Rechtschreibprüfung per Mausklick um.
    ' Funktioniert nur bis Outlook 2003
    ' (c) Peter Marchert - http://www.outlook-stuff.com
    ' 2008-11-12 Version 1.0.0
    '=====================================================================
    
    Dim strVer As String        ' Outlook®-Version
    Dim strRegKey As String     ' Schlüssel für die Rechtschreibprüfung
    Dim blnResult As Boolean    ' Umstellung erfolgreich
    
    '---------------------------------------------------------------------
    ' Outlook®-Version ermitteln
    '---------------------------------------------------------------------
    Select Case Left(Outlook.Version, 2)
        Case "9.": strVer = "9.0"    ' Outlook® 2000
        Case "10": strVer = "10.0"   ' Outlook® 2002
        Case "11": strVer = "11.0"   ' Outlook® 2003
    End Select
 
    '---------------------------------------------------------------------
    ' Registrierungsschlüssel zusammensetzen
    '---------------------------------------------------------------------
    strRegKey = "HKCU\Software\Microsoft\Office\" & strVer & "\Outlook\Options\Spelling\Speller"
 
    '---------------------------------------------------------------------
    ' Sprache umschalten
    '---------------------------------------------------------------------
    Select Case strLanguage
        Case "Deutsch"
            blnResult = RegWrite(strRegKey, "1031Normal")
        Case "Englisch"
            blnResult = RegWrite(strRegKey, "1033Normal")
        Case "Französisch"
            blnResult = RegWrite(strRegKey, "1036Normal")
        Case Else
            MsgBox "Es ist keine Sprache definiert.", vbCritical + vbOKOnly
            Exit Sub
    End Select
 
    '---------------------------------------------------------------------
    ' Umschaltung erfolgreich?
    '---------------------------------------------------------------------
    If blnResult Then
        MsgBox "Die Rechtschreibprüfung wurde auf " & strLanguage & _
            " umgestellt.", vbInformation + vbOKOnly
    Else
        MsgBox "Die Rechtschreibprüfung konnte nicht auf " & strLanguage & _
            " umgestellt werden.", vbCritical + vbOKOnly
    End If
 
End Sub
 
Private Function RegWrite(ByVal strKey As String, ByVal varValue As Variant) As Boolean
 
    '=====================================================================
    ' Schreibt Daten in die Registrierung
    ' 2008-11-12 Version 1.0.0
    '=====================================================================
    
    Dim objWsh As Object
 
    On Error Resume Next
 
    '---------------------------------------------------------------------
    ' Windows Script Host instanzieren
    '---------------------------------------------------------------------
    Set objWsh = CreateObject("WScript.Shell")
 
    '---------------------------------------------------------------------
    ' Daten in Registrierung schreiben
    '---------------------------------------------------------------------
    Call objWsh.RegWrite(strKey, varValue)
 
    '---------------------------------------------------------------------
    ' Prüfen, ob Wert geschrieben wurde
    '---------------------------------------------------------------------
    If RegRead(strKey) = varValue Then RegWrite = True
 
    '---------------------------------------------------------------------
    ' Clean Up
    '---------------------------------------------------------------------
    Set objWsh = Nothing
 
End Function
 
Private Function RegRead(ByVal strKey As String) As Variant
 
    '=====================================================================
    ' Liest Daten aus der Registrierung
    ' 2008-11-12 Version 1.0.0
    '=====================================================================
    
    Dim objWsh As Object
 
    On Error Resume Next
 
    '---------------------------------------------------------------------
    ' Windows Script Host instanzieren
    '---------------------------------------------------------------------
    Set objWsh = CreateObject("WScript.Shell")
 
    '---------------------------------------------------------------------
    ' Daten aus Registrierung lesen und zurückgeben
    '---------------------------------------------------------------------
    RegRead = objWsh.RegRead(strKey)
 
    '---------------------------------------------------------------------
    ' Clean Up
    '---------------------------------------------------------------------
    Set objWsh = Nothing
 
End Function