keybd_eventというAPIを利用。
ただOSからのイベントになるようなので、マクロが動いてる最中だとキーイベントが通らなくてキャプチャ失敗ということがよくある。
DoEventsやSleepでごまかしながらやってみる必要あり。
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_LMENU As Long = &HA4 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 my_cap(sheet_name) ' シート内の全画像を削除 Sheets(sheet_name).Activate For Each pic In ActiveSheet.Pictures pic.Delete Next ' キャプチャ実行 keybd_event VK_LMENU, 0&, fKEYDOWN, 0& 'Altキーを押す keybd_event vbKeySnapshot, 0&, fKEYDOWN, 0& keybd_event vbKeySnapshot, 0&, fKEYUP, 0& keybd_event VK_LMENU, 0&, fKEYUP, 0& 'Altキーを離す '貼り付け処理 Sheets(sheet_name).Activate Range("A1").Select 'SendKeys "+(^V)", True ActiveSheet.Paste End Sub ' PrintScreenの自動実行について ' http://www.asahi-net.or.jp/~zn3y-ngi/YNxv9d342.html
ネタ元