Access等でSendKeys "{TAB}"でNumLockが切り替わるのを避けるコード

VBAの中でも特に便利な SendKeys メソッドですが、実はかなり糞な実装なので、TABキー連打をエミュレートして入力項目を動いていくようなコードを書くと、いきなりNumLockが点いたり消えたりしはじめます。
お客さんがテンキー環境でシステムを使っていて、気が付いたらテンキーが使えなくなっている、という現象を聞き、「ああ、あれね」という感じでした。Web上でも愚痴っぽい話やら回避コードやらが多数掲載されており(この回避コードはうまく動かないモノも多いが(汗))、はっきり言ってメジャーな問題です。
公式のレポートを読むと

2 つ以上の SendKeys ステートメントが連続して実行されると、NumLock キーがオフになります。この問題は、CapsLock キーと ScrollLock キーにも影響することがあります。

と書かれてあるものの、基本的に直すつもりは無いようです(かなり昔から実装・発覚していて未だにパッチが当たってないので)。
ので、これを回避するためのコード*1を書く羽目に。まさにMSの尻ぬぐいですが、短いコードで済んだので今回はガマン。

Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Public Const KEYEVENTF_KEYUP = &H2
Public Const VK_TAB = &H9 '[TAB]

Public Sub StepNext()
  Call keybd_event(VK_TAB, 0, 0, 0)
  Call keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP, 0)
End Sub

上記の StepNext を呼ぶと、TABキーを1回押します。連打しても問題ありません。これをもっと拡張してオリジナルのSendKeysを書いても良いんですが、そんな時間ありませんw
誰か作って下さい(他力本願)。かなり需要はあると思いますが(既に遅い?)