2
www.ChF-Online.de  

Länder-/Sprachinformationen

   Neuigkeiten
   API-Aufrufe in VBA
 Belieb. Datei öffnen
 CommonDialog-Fehler
 Dateidatum lesen & setzen
 rel. Dateipfad korrigieren
 Flex. Öffnen-Dialog
 Flex. Speichern-Dialog
 Kurze Unterbrechung
 Pfade und Verzeichnisse
aktiv aktiv Spracheinstellung
 TreeView löschen
 Verzeichnisauswahl
 Verzeichnisauswahl /UNC
   VBA2HTML
   Word
   Word-VBA
   Word2007 (RibbonX)
   Word2010 (RibbonX)
   Outlook-VBA
   Links zu VB(A)
   DocToHelp
   Netport Express XL
   Astronomie
   Gästebuch
   Volltextsuche
   Sitemap
   Buch:Word-Programmierung
   Impressum & Kontakt
   Datenschutzerklärung
Getestet unter Word2000Getestet unter WordXPGetestet unter Win2000Getestet unter WinXP  
Makro/Datei speichern
Print

Innerhalb von Word kann man bekanntlich einem Text eine beliebige Sprache Sprachzuweisen. Möchte man aber diese per VBA auf die Standardeinstellung (zurück-)stellen, sollte man prüfen, welche Systemeinstellungen für den Rechner und den angemeldeten Benutzer (ab Windows 2000/NT) als Standard überhaupt eingestellt sind. Diese Prüfung kann besonders im deutschsprachigen Bereich sinnvoll sein, aber auch wenn länderspezifische Einstellungen greifen.

Mit Hilfe des API GetLocaleInfo lassen sich u.a. die aktuellen System- bzw. Benutzereinstellungen bzgl. der Länder- und Spracheinstellungen auslesen, wie sie auch in der Systemsteuerung unter Ländereinstellungen angezeigt werden. Dabei lässt sich festlegen, ob die Benutzereinstellungen (Standard) oder die Systemeinstellungen, die sich auf das installiert System und nicht auf die benutzerabhängigen Einstellungen beziehen, ausgelesen werden sollen.

Beispiel 1 Beispiel 2

Im Deklarationsteil werden neben dem API noch Konstanten für die Anzeige der Sprache und des Landes definiert. Die beiden weiteren APIs legen fest, wo die Informationen ausgelesen werden sollen: aus den Standard-Systemseinstellungen (LOCALE_SYSTEM_DEFAULT) oder den Standard-Benutzereinstellungen (LOCALE_USER_DEFAULT).

Const LOCALE_SNATIVELANGNAME = &H4   'Native name of the language.
Const LOCALE_SNATIVECTRYNAME = &H8   'Native name of the country/region.
Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" ( _  
  ByVal Locale As Long, _  
  ByVal LCType As Long, _  
  ByVal lpLCData As String, _  
  ByVal cchData As Long) _  
As Long  
'Default system locale.
Private Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long 
'Default user locale.
Private Declare Function GetUserDefaultLCID Lib "kernel32" () As Long 

In der Prozedur sub_LandSprache() werden nur die verschiedenen Informationen mit den entsprechenden Parametern an die Funktion  fkt_GetInfo() weitergereicht.

Private Sub sub_LandSprache()  
Dim ret As String  
    ret = "Land: " & fkt_GetInfo(LOCALE_SNATIVECTRYNAME) & " (" & fkt_GetInfo(&H1) & ")" & vbCrLf  
    ret = ret & "Sprache: " & fkt_GetInfo(LOCALE_SNATIVELANGNAME) & " (" & GetUserDefaultLCID & ")"  
    MsgBox ret, vbInformation, "Benutzereinstellungen"  
End Sub  

In der Funktion fkt_GetInfo() erfolgt dann die eigentliche Ermittlung der jeweiligen Infomation anhand des mitgegebenen Parameters.

Public Function fkt_GetInfo(ByVal lngInfo As Long) As String  
    Dim Buffer As String, ret As String  
    Buffer = String$(256, 0)  
    ret = GetLocaleInfo(GetUserDefaultLCID, lngInfo, Buffer, Len(Buffer))  
    If ret > 0 Then  
        fkt_GetInfo = Left$(Buffer, ret - 1)  
    Else  
        fkt_GetInfo = "keine Information"  
    End If  
End Function 

 Besucher: 7 online  |  12 heute  |  2498 diesen Monat  |  1584064 insgesamt | Seitenaufrufe: 57   Letzte Änderung: 24.06.2006 © 2001-14 Christian Freßdorf
  Das Leben ist eine Anstrengung, die einer besseren Sache würdig wäre.
Karl Kraus
 powered by phpCMS and PAX