ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Excel VBA > 如何运用VBA进行工作表截图

如何运用VBA进行工作表截图

作者:绿色风 分类: 时间:2022-08-18 浏览:268
楼主
xmyjk
Q:如何运用VBA进行工作表截图?
分两种需求:一种截取EXCEL窗口屏幕的内容,第二种截取工作表USEDRANGE的内容

A:一、截取EXCEL窗口屏幕内容:采用模拟键盘按键ALT+PRTSC进行操作:
  1. Option Explicit

  2. Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
  3. Private Const VK_KEYUP = &H2
  4. Private Const VK_SNAPSHOT = &H2C
  5. Private Const VK_MENU = &H12

  6. Declare Function apiShowWindow Lib "user32" Alias "ShowWindow" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
  7. Private Const SW_MAXIMIZE = 3
  8. Private Const SW_SHOWNORMAL = 1
  9. Private Const SW_SHOWMINIMIZED = 2

  10. Sub Print_Screen()
  11. Dim SH As Worksheet
  12.       
  13. Set SH = ActiveSheet
  14.       
  15. keybd_event VK_MENU, 0, 0, 0
  16. DoEvents
  17. keybd_event VK_SNAPSHOT, 0, 0, 0
  18. DoEvents
  19. keybd_event VK_SNAPSHOT, 0, VK_KEYUP, 0
  20. DoEvents
  21. keybd_event VK_MENU, 0, VK_KEYUP, 0
  22. DoEvents
  23.       
  24. SH.Range("A1").Select
  25. SH.Paste

  26. End Sub

123ok1.rar


第二个:制作USDRANGE内容的图片并保存,运用CopyPicture+操纵剪贴板+EnhMetaFileA(创建位图元素保存)
  1.     Option Explicit
  2.     Private Declare Function OpenClipboard Lib "User32" (ByVal hWnd As Long) As Long
  3.     Private Declare Function CloseClipboard Lib "User32" () As Long
  4.     Private Declare Function GetClipboardData Lib "User32" (ByVal uFormat As Long) As Long
  5.     Private Declare Function CopyEnhMetaFileA Lib "Gdi32" (ByVal hemfSrc As Long, ByVal lpszFile As String) As Long
  6.     Private Declare Function DeleteEnhMetaFile Lib "Gdi32" (ByVal hdc As Long) As Long
  7.     Sub test()
  8.     Dim picnm As String
  9.     picnm = Application.GetSaveAsFilename("try1.jpg", "图片, *.jpg", , "请选择保存路径并键入文件名")
  10.     ActiveSheet.UsedRange.CopyPicture
  11.     OpenClipboard 0
  12.     DeleteEnhMetaFile CopyEnhMetaFileA(GetClipboardData(14), picnm)
  13.     CloseClipboard
  14.     Range("a1").Select
  15.     ActiveSheet.Paste
  16.     End Sub

xxxx.rar



该帖已经同步到
2楼
简单一点
不知道10里面的 插入-屏幕截图-屏幕剪辑 的方法应该怎么调用?  
3楼
JOYARK1958
謝謝提供學習下載中

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap