VBA – SendKeys
VBA – SendKeys
Die VBA-Methode SendKeys wird verwendet, um Tastatureingaben an die aktive Anwendung zu senden:
Application.SendKeys ("s")
Der obige Code ahmt das Drücken der Taste „s“ auf der Tastatur nach. Die SendKeys-Methode benötigt zwei Argumente:
- Keys – Die Taste(n), die Sie als Text an die Anwendung senden möchten.
- Wait(Optional) – Dieser Wert kann entweder True oder False sein. Bei True wartet Excel zunächst auf die Verarbeitung der Tasten, bevor es die nächste Codezeile ausführt. Bei False fährt Excel mit der Ausführung der Prozedur fort, ohne auf die Verarbeitung der Tasten zu warten.
SendKeys wird in der Regel bei der Interaktion mit anderen Anwendungen verwendet, weil es eine schnelle und einfache Möglichkeit ist, Aufgaben zu erledigen. Sie können SendKeys zum Beispiel verwenden, wenn Sie den Internet Explorer automatisieren.
Allerdings sollten Sie bei der Verwendung der SendKeys-Methode äußerst vorsichtig sein, da sie unerwartete Ergebnisse haben kann. Wir empfehlen, SendKeys nur als letzten Ausweg zu verwenden und/oder wenn Fehler tolerierbar (oder leicht zu erkennen) sind.
VBA – SendKeys-Beispiele
Jede Taste in Form von Buchstaben wird durch ihr Zeichen dargestellt, z. B. ist a ein „a“. Wenn Sie Tasten in Kombination mit Strg, Umschalttaste oder Alt verwenden möchten, müssen Sie dem Tastencode folgendes voranstellen:
Taste | Code |
---|---|
Strg | ^ |
Umschalttaste | + |
Alt | % |
Der folgende Code verwendet die SendKeys-Methode, um die Arbeitsmappe zu speichern:
Sub SendKeysVerwenden()
Application.SendKeys ("^s")
End Sub
Wie bereits erwähnt, müssen Sie bei der Verwendung von SendKeys äußerst vorsichtig sein. Der folgende Code legt eine Wartezeit von 10 Sekunden fest, bevor der Text eingegeben bzw. an Notepad gesendet wird. Indem Sie 10 Sekunden warten, geben Sie Notepad die Möglichkeit, sich ordnungsgemäß zu öffnen, was die Wahrscheinlichkeit eines Fehlers verringert.
Hinweis: Dieser Code verwendet die Methode Application.Wait.
Sub SendKeysMitWaitVerwenden()
Call Shell("C:\Windows\system32\Notepad.Exe", vbNormalFocus)
Application.Wait (Now() + TimeValue("00:00:10"))
Call SendKeys("Dies ist ein beliebiger Text", True)
End Sub
Das Ergebnis nach 10 Sekunden Wartezeit ist:
SendKeys kann ein extrem schneller und einfacher Weg sein, um Aufgaben zu erledigen. Allerdings ist das Risiko von Fehlern relativ hoch. Verwenden Sie SendKeys nur, wenn dieses Risiko akzeptabel ist!