Clés d'envoi VBA

Clés d'envoi VBA

La méthode VBA SendKeys est utilisée pour envoyer des frappes à l'application active :

1 Application.SendKeys ("s")

Le code ci-dessus imitera l'appui sur la touche « s » du clavier.

La méthode SendKeys prend deux arguments :

  • Clés - La ou les clés que vous souhaitez envoyer à l'application sous forme de texte.
  • Attendre (Optionnel)- Cette valeur peut être True ou False. Si True, Excel attend que les clés soient d'abord traitées avant d'exécuter la ligne de code suivante. Si False, Excel continue à exécuter la procédure sans attendre le traitement des clés.

SendKeys est généralement utilisé lors de l'interaction avec d'autres applications, car c'est un moyen rapide et facile d'accomplir des tâches. Par exemple, vous pouvez utiliser SendKeys lors de l'automatisation d'Internet Explorer.

Cependant, vous devez être extrêmement prudent lorsque vous utilisez la méthode SendKeys car elle peut avoir des résultats inattendus. Nous vous recommandons d'utiliser SendKeys uniquement en dernier recours et/ou lorsque les erreurs sont tolérables (ou facilement détectables).

Exemples de clés d'envoi VBA

Chaque clé en termes de lettres est représentée par leur caractère, par exemple a est « a ».
Si vous souhaitez utiliser les touches en combinaison avec Ctrl, Shift ou Alt, vous devez faire précéder le code de touche avec ce qui suit :

Clé Code
Ctrl ^
Décalage +
Alt %

Le code suivant utilise la méthode SendKeys pour enregistrer le classeur :

12345 Sous utilisantSendKeys()Application.SendKeys ("^s")Fin du sous-marin

Comme nous l'avons mentionné précédemment, vous devez être extrêmement prudent lorsque vous utilisez SendKeys. Le code suivant spécifie un temps d'attente de 10 secondes avant que le texte ne soit saisi/envoyé au Bloc-notes. En attendant 10 secondes, vous permettez au Bloc-notes de s'ouvrir correctement, réduisant ainsi le risque d'erreur.

Remarque : ce code utilise la méthode Application.Wait.

1234567 Sous utilisantSendKeysWithWait()Appelez Shell("C:\Windows\system32\Notepad.Exe", vbNormalFocus)Application.Wait (Now() + TimeValue("00:00:10"))Appelez SendKeys("Ceci est du texte", True)Fin du sous-marin

Le résultat après 10 secondes d'attente est :

SendKeys peut être un moyen extrêmement rapide et facile d'accomplir des tâches. Cependant, les risques d'erreurs sont relativement élevés. N'utilisez SendKeys que lorsque ce risque est acceptable !

wave wave wave wave wave