頁: [1] 2
|
 |
|
作者
|
主題: 請問print screen的代碼如何寫?? (閱讀 1024 次)
|
|
nolo
|
如題
window鍵盤上PrtScr鍵代碼無法用錄製取得 PRINT SCREEN 代碼是 {PRTSC} 這樣寫試不出來 不知如何才正確 請指點謝謝先 Sub Macro2() SendKeys ("{PRTSC}") Sheet1.[A1].Paste End Sub
我的要求是 打開檔案時即擷取一張屏幕圖 (截屏前須先將EXCEL視窗縮至最小以顯現要截屏的畫面) 並將其貼到A1 以後每小時擷取一張屏幕圖 (截屏前一樣須先將EXCEL視窗縮至最小 下張圖則貼至最適合之高度之行(緊接前一張圖) 例如第一張圖貼滿A1:K20 第二張貼到A21 不知如何達成 敬請版主及高手大大們賜教 謝謝先
|
|
|
|
|
已記錄
|
|
|
|
|
Emily_Li
|
一個 Print Screen 的例子, 但不是屏幕, 是 Web 的 http://cat14051.mysinablog.com/index.php?op=ViewArticle&articleId=77652Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal _ bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Private Const VK_KEYUP = &H2 Private Const VK_SNAPSHOT = &H2C Private Const VK_MENU = &H12 Dim ws As Worksheet Declare Function apiShowWindow Lib "user32" Alias "ShowWindow" _ (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long Global Const SW_MAXIMIZE = 3 Global Const SW_SHOWNORMAL = 1 Global Const SW_SHOWMINIMIZED = 2
Sub Print_Screen() keybd_event VK_MENU, 0, 0, 0 DoEvents keybd_event VK_SNAPSHOT, 0, 0, 0 DoEvents keybd_event VK_SNAPSHOT, 0, VK_KEYUP, 0 DoEvents keybd_event VK_MENU, 0, VK_KEYUP, 0 DoEvents ws.Paste Destination:=ws.Range("A1") DoEvents End Sub
Tools - Macro - Print_Screen ' Active Windows Ref: http://www.officefans.net/cdb/viewthread.php?tid=66035&pid=472302&page=1&extra=page%3D2#pid472302
|
|
|
|
|
已記錄
|
|
|
|
|
|
|
hsieh
|
少有API使用範例 多謝Emily_Li 前輩提供 供我後輩學習
|
|
|
|
|
已記錄
|
回答滿意嗎? 記得告訴我哦!!
|
|
|
|
nolo
|
 |
疑問中???
« 回覆文章 #4 於: 2006-12-13, 15:32:43 » |
|
|
|
|
|
|
已記錄
|
|
|
|
|
nolo
|
結果與要求有落差內  這代碼是擷取excel的畫面 我的要求是 打開檔案時即擷取一張屏幕圖 ( 截屏前須先將EXCEL視窗縮至最小以顯現要截屏的畫面) 亦即是擷取另一個正於視窗最上層執行的程式畫面而不是擷取excel的畫面並將其貼到A1 以後每小時擷取一張屏幕圖 (截屏前一樣須先將EXCEL視窗縮至最小) 不知能否改改 謝謝先 
|
|
|
|
|
已記錄
|
|
|
|
|
Emily_Li
|
你還是找 Capture Program 例如 SnagIt
|
|
|
|
|
已記錄
|
|
|
|
|
nolo
|
無論如何還是感謝Emily_Li 大姐姐 您:D
|
|
|
|
|
已記錄
|
|
|
|
|
hsieh
|
依樣畫葫蘆 利用Emily_Li 前輩程式碼修改 Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal _ bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Private Const VK_KEYUP = &H2 Private Const VK_SNAPSHOT = &H2C Private Const VK_MENU = &H12 Dim ws As Worksheet
Declare Function apiShowWindow Lib "user32" Alias "ShowWindow" _ (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Global Const SW_MAXIMIZE = 3 Global Const SW_SHOWNORMAL = 1 Global Const SW_SHOWMINIMIZED = 2
Sub Print_Screen()
keybd_event VK_MENU, 0, 0, 0 DoEvents Application.WindowState = xlMinimized Application.Wait Now + TimeValue("00:00:05") keybd_event VK_SNAPSHOT, 0, 0, 0 DoEvents
keybd_event VK_SNAPSHOT, 0, VK_KEYUP, 0 DoEvents
keybd_event VK_MENU, 0, VK_KEYUP, 0 DoEvents Application.WindowState = xlMaximized Set ws = ActiveWorkbook.ActiveSheet ws.Paste Destination:=ws.Range("A1") DoEvents Application.OnTime Now + TimeValue("01:00:00"), "Print_Screen" End Sub [附件已被管理員刪除]
|
|
|
|
« 最後編輯時間: 2006-12-14, 22:53:24 由 hsieh »
|
已記錄
|
回答滿意嗎? 記得告訴我哦!!
|
|
|
|
nolo
|
哇!!!!萬歲  好像真的可以耶  萬分謝謝hsieh 版主大大 測試先!!
|
|
|
|
|
已記錄
|
|
|
|
|
頁: [1] 2
|
|
|
|