[PrintScreen]の自動実行について

Question 66.92 その他 Excel VBA Borad (掲示板)より Previous Next
PCの全画像をキャプチャしてシートに貼り付けようと思い、下記のようにしたのですがうまくいきません。
SendKeys "{PRTSC}", True の実行時点でクリップボードに入って来ないので、プリントスクリーンを押した認識が出来ていないみたいです。
実際にキーボードで [PrintScreen]を押してから、
Range("M1").Select…以降を実行すると問題はないのですが、何を間違っているのか教えていただきたいと思います。
Sub 試抜き()

 試抜き Macro
 マクロ記録日 : 2004/3/13 ユーザー名 : 品質管理

    SendKeys "{PRTSC}", True
    Range("M1").Select
    ActiveSheet.Paste
    Selection.Name = "RU"
    With Selection.ShapeRange
        .PictureFormat.CropTop = 18.75
        .PictureFormat.CropLeft = 3.75
        .PictureFormat.CropBottom = 378.75
        .PictureFormat.CropRight = 522.75
        .IncrementTop 27#
    End With
    Range("N1").Select
End Sub
Answer   2004.3.26 井川はるき
SendKeysステートメントのヘルプに 「また、Sendkeys ステートメントは、アプリケーションに Copy キーを渡せません。」と書いてありますよ。
ちなみに、Applicationクラスの SendKeysメソッドの方は {PRTSC} という説明もないと思います(つまり使えない)。
以下サンプルを提示しますので、参考にしてください。
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 KEYEVENTF_EXTENDEDKEY As Long = &H1
Private Const KEYEVENTF_KEYUP As Long = &H2
Private Const fKEYDOWN = KEYEVENTF_EXTENDEDKEY
Private Const fKEYUP = KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP

Sub Sample()
    keybd_event vbKeySnapshot, 0&, fKEYDOWN, 0&
    keybd_event vbKeySnapshot, 0&, fKEYUP, 0&
    '貼り付け処理
End Sub
はずしてたらすみません。
お礼とお願い
早速のアドバイスまことにありがとうございます。
とりあえずまるまるコピーさせてもらって試してみたところ、貼付け作業のところがステップで送るとうまくいくのに、実行で走らせるとうまくいかなかったので
    SendKeys "+(^V)", True
    ActiveSheet.Paste
End Sub
と同じ事を 2回やるようにしたらうまくいきました。

ところで、いただいたサンプルのなかみは自分にはチンプンカンプンで応用がきかないので、ついでといっては何ですが、[Alt]キーと [PrintScreen]キーの同時押しに関するサンプルも、提供いただけませんでしょうか。
あつかましいお願いで申し訳ありませんが宜しくお願いします。
Answer   2004.4.5 井川はるき
しばらく来ていないうちにご注文がついていたのですね。レスが遅くなりまして申し訳ありません。
Altキーについても、仮想的に押して戻してあげればいいので、次のようになります。
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 KEYEVENTF_EXTENDEDKEY As Long = &H1
Private Const KEYEVENTF_KEYUP As Long = &H2
Private Const VK_LMENU As Long = &HA4
Private Const fKEYDOWN = KEYEVENTF_EXTENDEDKEY
Private Const fKEYUP = KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP

Sub Sample()
    keybd_event VK_LMENU, 0&, fKEYDOWN, 0&
    keybd_event vbKeySnapshot, 0&, fKEYDOWN, 0&
    keybd_event vbKeySnapshot, 0&, fKEYUP, 0&
    keybd_event VK_LMENU, 0&, fKEYUP, 0&
End Sub
重ね重ねありがとうございました
おかげで職場の作業が大幅に改善出来そうです。さっそく仕事で使えるように細工しようと思います。
またお願いするかもしれませんが宜しくお願いします。

Excel VBA Macro