none
Ersatz für "SendKeys" RRS feed

  • Frage

  • Hallo,

    unter WIN XP habe ich bisher den VBA-Befehl SendKeys "%D" in einem Makro verwendet, um in WORD 2002 das Kontext-Menü "Datei" zu öffnen, welches ja bekanntlich mit der Tastenkombination "Alt+D" angezeigt werden kann.

    Unter WINDOWS 7 wird der SendKeys-Befehl nun nicht mehr ausgeführt. Daher suche ich eine alternative VBA-Anweisung, welche das Menü "Datei" öffnet. In der VBA-Literatur habe ich hierzu leider nichts gefunden.

    Wilfried
    Freitag, 27. November 2009 08:17

Antworten

  • Hallo Wilfried,

    der Weg über die CommandBars ist auf jeden Fall der empfehlenswerte, statt irgendwelche Tastenkombinationen zu senden. Denn Du kannst nie sicherstellen, dass die Tastenkombination auch wirklich in dem richtigen Fenster ankommt.

    Hier ein Beispiel um das Date-Menü anzuzeigen:

        Dim lMenu As CommandBarPopup
        Set lMenu = Application.CommandBars.FindControl(, 30002)
        
        If Not lMenu Is Nothing Then
            lMenu.Execute
        End If

    Beachten solltest Du ferner, dass dies unter Word/Office 2007 nicht mehr funktioniert.

    btw. bei mir funktioniert auch SendKeys in Windows 7 ohne Probleme.
    Thorsten Dörfler
    Microsoft MVP Visual Basic
    Samstag, 28. November 2009 13:19
    Moderator

Alle Antworten

  • Hallo Wilfried,

    Versuch mal mit der keybd_event API einen Alt+D senden:


    Private Declare Sub keybd_event Lib "user32" ( _
        ByVal bVk As Byte, ByVal bScan As Byte, _
        ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
        
    Private Const VK_ALT = &H12
    Private Const VK_D = &H44
    Private Const KEYEVENTF_KEYUP = &H2
    
    Private Sub Keys_Senden()
        '//Alt
        keybd_event VK_ALT, 0, 0, 0
        DoEvents
    
        '//D
        keybd_event VK_D, 1, 0, 0
        DoEvents
        
        '//Alt auslassen
        keybd_event VK_ALT, 0, KEYEVENTF_KEYUP, 0
        DoEvents
    
    End Sub




    Grüsse,

    Robert

    Freitag, 27. November 2009 15:23
    Moderator
  • Vielen Dank Robert, aber es funktioniert leider nicht! Ich denke, es müsste etwas mit den Befehlen
    'Application.CommandBars("file")....' und vielleicht auch 'ShowPopup' zu tun haben.

    Gruß Wilfried
    Samstag, 28. November 2009 07:43
  • Hallo Wilfried,

    der Weg über die CommandBars ist auf jeden Fall der empfehlenswerte, statt irgendwelche Tastenkombinationen zu senden. Denn Du kannst nie sicherstellen, dass die Tastenkombination auch wirklich in dem richtigen Fenster ankommt.

    Hier ein Beispiel um das Date-Menü anzuzeigen:

        Dim lMenu As CommandBarPopup
        Set lMenu = Application.CommandBars.FindControl(, 30002)
        
        If Not lMenu Is Nothing Then
            lMenu.Execute
        End If

    Beachten solltest Du ferner, dass dies unter Word/Office 2007 nicht mehr funktioniert.

    btw. bei mir funktioniert auch SendKeys in Windows 7 ohne Probleme.
    Thorsten Dörfler
    Microsoft MVP Visual Basic
    Samstag, 28. November 2009 13:19
    Moderator
  • Hallo Thorsten,

    Dein Makro funktioniert, vielen Dank!

    Die SendKeys funktionierten bei mir weder bei der Ultimate-Testversion noch bei meinem jetzigen WIN 7 Pro. Dies änderte sich erst, nachdem Utimate einige Wochen Betriebsdauer hinter sich hatte: Plötzlich ging das (von XP übernommene) SendKeys-Makro wieder, ohne das ich bewusst irgendwelche Einsstellungen verändert hatte.

    Viele Grüße
    Wilfried
    Samstag, 28. November 2009 15:17
  • Hallo

    das UAC blockt Sendkeys. Mein Excelmakro mit SENDKEYS funktioniert wieder, nachdem ich UAC abgeschaltet habe.

     

    mfg

    Montag, 9. Mai 2011 07:55