2014-02-05 124 views
2

如何在excel中使用VBA截取网页截图。 问题是只有通过按下键盘的F6键才能拍摄屏幕截图,因为Screenhunter用于此目的。 打印屏幕键被禁用。如何使用VBA截取网页截图?

我用下面的代码,但意识到sendkey功能无法使用:

sub test() 

     application.sendkeys "{F6}" 

    end sub 

请帮助。

+0

我已经回答了类似的问题。现在我不确定它是在这里还是vbforums或msdn:p让我搜索它 –

+0

顺便说一句,不是F6的激活网页浏览器的地址栏? –

+0

啊!找到它...看到[这](http://stackoverflow.com/questions/10759580/vba-webbrowser-capture-full-screen)。在你的情况下,由于打印屏幕不工作,你想要你'F6',把'调用keybd_event(VK_SNAPSHOT,0,0,0)'改为'调用keybd_event(VK_F6,0,0,0)',作为顶级常量,就像我为'VK_SNAPSHOT'做的那样。 [Here](http://msdn.microsoft.com/en-us/library/dd375731%28v=VS.85%29.aspx)是虚拟列表代码的完整列表 –

回答

4

我在最大化屏幕后添加了一些延迟,创建了Word Doc并粘贴了屏幕截图。其余代码取自Siddharth提供的链接。

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 - 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 
Sleep 3000 
    DoEvents 

    '~~> Take a snapshot 
    Call keybd_event(VK_SNAPSHOT, 0, 0, 0) 

    '~~> Start Word 


    Set wordobj = CreateObject("Word.Application") 

    Set objDoc = wordobj.Documents.Add 

    wordobj.Visible = True 

    Set objSelection = wordobj.Selection 

    'Paste into Word 
    objSelection.Paste 

End Sub 
+0

嗨,我今天有这个问题。我想打印屏幕http://www.hkab.org.hk/hibor/listRates.do?lang=en&Submit=Search&year=2014&month=1&day=10我改变IE浏览器。浏览此链接。它弹出IE窗口没有找到!我怎样才能做到这一点?它能够加载页面。虽然不能打印屏幕。 – useR