[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAでスクリーンショット取得し所定サイズトリミングして指定セルへの貼付マクロ』(ジョニー)
過去の投稿を参考にして、
「VBAでスクリーンショット取得し所定サイズトリミングして指定セルへの貼付マクロ」
を作成したのですが、
オフィスクリップボードが空の状態でマクロを起動すると、
1回目のActiveSheet.Pasteでエラーが起きます。
また、一旦手動でプリントスクリーンキーでスクリーンショットを取ると、
1回目はマクロが動作するのですが、2回目以降マクロを動作させると、
画面が1回目のスクリーンショットのまま貼付られてしまいます。
(例えば1回目は画面にAという表示がある状態で、
2回目はBという表示がある状態でマクロを動作させているのに、
2回目のスクリーンショットがAのままになってしまいます)
最初のエラーとスクリーンショットが更新されないのはどこが悪いのでしょうか?
〜以下コード〜
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 スクショマクロ() keybd_event vbKeySnapshot, 0&, fKEYDOWN, 0& keybd_event vbKeySnapshot, 0&, fKEYUP, 0& Sheets(1).Activate Range("A30").Select ActiveSheet.Paste With Selection.ShapeRange .PictureFormat.CropTop = 155 .PictureFormat.CropBottom = 368 .PictureFormat.CropRight = 600 .PictureFormat.CropLeft = 20 .ScaleWidth 0.75, msoTrue End With Selection.Cut Range("A30").Select ActiveSheet.PasteSpecial Format:="図 (JPEG)", Link:=False, DisplayAsIcon:=False End Sub
< 使用 Excel:Excel2007、使用 OS:Windows7 >
(マナ) 2019/04/26(金) 19:29
(マナ) 2019/04/26(金) 19:33
Sub スクショマクロ()
keybd_event vbKeySnapshot, 0&, fKEYDOWN, 0& keybd_event vbKeySnapshot, 0&, fKEYUP, 0&
Application.Wait Now() + TimeValue("00:00:01")
Sheets(1).Activate Range("A30").Select ActiveSheet.Paste With Selection.ShapeRange .PictureFormat.CropTop = 155 .PictureFormat.CropBottom = 368 .PictureFormat.CropRight = 600 .PictureFormat.CropLeft = 20 .ScaleWidth 0.75, msoTrue End With Selection.Cut Range("A30").Select ActiveSheet.PasteSpecial Format:="図 (JPEG)", Link:=False, DisplayAsIcon:=False End Sub (ジョニー) 2019/04/26(金) 19:38
たぶん、スペック高くてもだめだと思います。
(マナ) 2019/04/26(金) 19:50
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.