VBA WebBrowser捕获全屏

想在VBA的范围内做这个(其他用户没有其他的开发工具可以修改)。 我知道的第三方应用程序(例如iMacros),做类似的,但要尽可能通用。 该店使用XP和Excel 2003。

(1) VBA子程序正在控制InternetExplorer浏览器来自动查看网站,表单提交等。

(2)是否有方法从WebBrowser的内容获取屏幕截图? 没有凌乱的SendKeys方法? .NET有一个Webbrowser.DrawToBitmap方法,但找不到VBA的简单解决scheme。 想要整个屏幕,包括滚动条下方的“折叠下方”…

TRIED AND TESTED(将完整代码粘贴到模块中并运行Sub Sample()

代码逻辑

1)这段代码将打开IE

2)导航到Google.com

3)最大化IE

4)拍快照

5)启动MSPaint

6)粘贴到MSPaint中

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, _ ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long) Private Const VK_SNAPSHOT As Byte = 44 Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal _ lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal _ nCmdShow As Long) As Long Private Const SW_SHOWMAXIMIZED = 3 Private Const VK_LCONTROL As Long = &HA2 Private Const VK_V = &H56 Private Const KEYEVENTF_KEYUP = &H2 Sub Sample() Dim IE As Object Dim hwnd As Long, IECaption As String Set IE = CreateObject("InternetExplorer.Application") IE.Visible = True IE.Navigate "www.Google.com" Sleep 5000 '~~> Get the caption of IE IECaption = "Google - Windows Internet Explorer" '~~> Get handle of IE hwnd = FindWindow(vbNullString, IECaption) If hwnd = 0 Then MsgBox "IE Window Not found!" Exit Sub Else '~~> Maximize IE ShowWindow hwnd, SW_SHOWMAXIMIZED End If DoEvents '~~> Take a snapshot Call keybd_event(VK_SNAPSHOT, 0, 0, 0) '~~> Start Paint Shell "C:\Windows\System32\mspaint.exe", vbNormalFocus Sleep 3000 '~~> Paste snapshot in paint keybd_event VK_LCONTROL, 0, 0, 0 keybd_event VK_V, 0, 0, 0 keybd_event VK_V, 0, KEYEVENTF_KEYUP, 0 keybd_event VK_LCONTROL, 0, KEYEVENTF_KEYUP, 0 End Sub 
 Dim objIe As Object Set objIe = CreateObject("internetexplorer.application") With objIe .Navigate "www.google.com" '// Set offline JIC user NOT Online .offline = True '// Maximise the Ie window if not Already Max .Visible = True '// This routine used to Maximise Ie ShowWindow objIe.hwnd, SW_MAXIMIZE SetForegroundWindow objIe.hwnd End With 
 Public Const SW_MAXIMIZE As Long = 3 'Show window Maximised Public Const SW_MINIMIZE As Long = 1 'Show window Minimized Public Declare Function ShowWindow _ Lib "user32" ( _ ByVal hwnd As Long, _ ByVal nCmdShow As Long) _ As Long Public Declare Function SetForegroundWindow _ Lib "user32" ( _ ByVal hwnd As Long) _ As Long