Benutzer mit den meisten Antworten
Ersatz für "SendKeys"

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
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- Als Antwort vorgeschlagen Thorsten DörflerModerator Samstag, 28. November 2009 17:09
- Als Antwort markiert Robert BreitenhoferModerator Sonntag, 29. November 2009 11:31
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
-
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- Als Antwort vorgeschlagen Thorsten DörflerModerator Samstag, 28. November 2009 17:09
- Als Antwort markiert Robert BreitenhoferModerator Sonntag, 29. November 2009 11:31
-
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