Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
924to928
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
924to928
924to928
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Tastaturlayout > 2 Sprachen - Belegung feststellen

Tastaturlayout > 2 Sprachen - Belegung feststellen
14.11.2007 10:47:00
Hermann
Hallo,
wie kann ich über VBA feststellen,
  • welche Tastaturlayouts ein Benutzer eingestellt hat,
  • in welcher Reihenfolge sie vorliegen,
  • welche gerade aktiv ist,
    um für bestimmte Spalten eine bestimmte Sprache einzustellen.
    Das Beispiel vom 08.11.2007 18:25:56 macht im Grunde nix anderes als
    Sendkeys "%+" True (soferne der Benutzer keine andere Tastenbelegung eingestellt hat)
    und ist daher nur bei 2 Sprachbelegungen möglich.
    Schöne Grüße aus Wien
    Hermann

  • 2
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Tastaturlayout > 2 Sprachen - Belegung festste
    16.11.2007 20:44:14
    MichaV
    Hallo,
    so kannst Du nach belieben Tastaturlayouts aktivieren. Wenn sie nicht installiert sind, werden sie nachinstalliert. Kopiere diese Zeilen in ein allgemeines Modul, dann kannst Du z.B. mit SetKbLayout LANG_EN_US eine US- Tastatur einstellen, oder mit SetKbLayout LANG_DU_STD die deutsche Tastaturbelegung wieder herstellen.
    Quelle: http://www.ex-designz.net/apidetail.asp?api_id=499


    Option Explicit
    'This fucntion changes the locale and as a result, the keyboardlayout gets adjusted
    'parameters for api's
    Const KL_NAMELENGTH As Long = 9 'length of the keyboardbuffer
    Const KLF_ACTIVATE As Long = &H1 'activate the layout
    'the language constants
    Const LANG_NL_STD As String = "00000413"
    Const LANG_EN_US As String = "00000409"
    Const LANG_DU_STD As String = "00000407"
    Const LANG_FR_STD As String = "0000040C"
    'api's to adjust the keyboardlayout
    Private Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As StringAs Long
    Private Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As StringByVal flags As LongAs Long
    Public Function SetKbLayout(strLocaleId As StringAs Boolean
    'Changes the KeyboardLayout
    'Returns TRUE when the KeyboardLayout was adjusted properly, FALSE otherwise
    'If the KeyboardLayout isn't installed, this function will install it for you
    On Error Resume Next
    Dim strLocId As String 'used to retrieve current KeyboardLayout
    Dim strMsg As String 'used as buffer
    Dim lngErrNr As Long 'receives the API-error number
    'create a buffer
    strLocId = String(KL_NAMELENGTH, 0)
    'retrieve the current KeyboardLayout
    GetKeyboardLayoutName strLocId
    'Check whether the current KeyboardLayout and the
    'new one are the same
    If strLocId = (strLocaleId & Chr(0)) Then
        'If they're the same, we return immediately
        SetKbLayout = True
    Else
        'create buffer
        strLocId = String(KL_NAMELENGTH, 0)
        'load and activate the layout for the current thread
        strLocId = LoadKeyboardLayout((strLocaleId & Chr(0)), KLF_ACTIVATE)
        If IsNull(strLocId) Then 'returns NULL when it fails
            SetKbLayout = False
        Else 'check again
            'create buffer
            strLocId = String(KL_NAMELENGTH, 0)
            'retrieve the current layout
            GetKeyboardLayoutName strLocId
            If strLocId = (strLocaleId & Chr(0)) Then
                SetKbLayout = True
            Else
                SetKbLayout = False
            End If
        End If
    End If
    End Function


    Und so kommst Du an die Layout- Konstanten ran:
    http://www.vbarchiv.net/forum/id22_i25491t25471.html
    Aber wozu ist es wichtig, das Tastaturlayout des Benutzers zu ändern? Mich würde es auf die Palme bringen, wenn ein Programm an meinen Tastatureinstellungen rumfummeln würde. Die stellen sich von alleine schon viel zu häufig um....
    Gruß- Micha
    PS: Rückmeldung wäre nett.

    Anzeige
    AW: Tastaturlayout > 2 Sprachen - Belegung festste
    19.11.2007 15:03:00
    Hermann
    Hallo Micha,
    vielen herzlichen Dank für deine Antwort.
    ein Anwendungsbeispiel bezüglich feststellen, des Layouts besteht darin, dass ich einen Bericht mit mehren Sprachen ( Deutsch / Russisch / Tschechisch ) erstelle, wobei ich für jede Sprache eine Spalte bzw. eine Zeile verwende. Daneben bzw. darunter ist das Zahlenwerk.
    Beim Öffnen des Berichts sehe ich im Tastaturlayout nach, welche Sprache eingestellt ist und blende die entsprechende Spalte bzw Zeile ein.
    So erspare ich mir das Kopieren des Zahlenwerkes in unterschiedliche Dateien.
    Macht doch irgendwie einen professionelleren Eindruck oder? *g*
    Nun - ich stimme mit dir überein ... es würde mich ebenso wahnsinnig machen, wenn ein Programm einfach so mein Tastaturlayout verändern würde ... aber ...
    ich habe ein Vokabel-lern-Makro gebastelt, das, da es auf Excel basiert, grundsätzlich für alle Sprachen möglich ist.
    Es ist noch im Stadium des Korrekturlesens durch einen nativspeaker, aber in meinem Freundeskreis, die mit unterschiedlichen Layouts arbeiten, wurde immer wieder "gejammert", das es öde ist, mit alt+shift zu arbeiten. Ich habe ansonsten ein so gutes feedback zu diesem Makro, dass es für manche meiner Freunde kaum verständlich ist, dass gängige Sprachinstitute nicht schon so etwas offenes vermarkten.
    Das Einstellen, des Tastenlayouts für das Erfassen und Abfragen ist nur noch das fehlende Tüpfelchen auf dem i.
    Deine obige Funktion ist mir da ausgesprochen hilfreich, auch wenn ich die Sprachentabelle erst anlegen muss.
    Nochmals vielen Dank und
    Schöne Grüße aus Wien
    Hermann
    P.S. solltest du Interesse an dem Vokabel-Lern-Makro haben - in ungefähr 3 Wochen wird es mit ca. 1500 Englischen Vokabeln und Beispielsätzen mit der vom Benutzer einstellbaren Stastaturlayouts fertig sein.
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige