Вопрос по excel, vba – VBA WebBrowser захватить весь экран

8

Хотелось бы сделать это в рамках VBA (другие пользователи не имеют других инструментов для разработки). Я знаю о сторонних приложениях (например, iMacros), которые делают подобное, но хотят, чтобы это было как можно более универсальным. Магазин использует XP и Excel 2003.

(1) Подпрограмма VBA управляет браузером InternetExplorer для автоматизации просмотра веб-сайта, отправки форм и т. Д.

(2) Есть ли способ получить снимок экрана с содержимым веб-браузера? Без грязных SendKeys подходит? .NET имеет метод Webbrowser.DrawToBitmap, но не может найти простое решение для VBA. Требуется весь экран, включая & quot; ниже сгиба & quot; - под полосами прокрутки ...

PDF любое использование? Если это так, вы можете напечатать. Fionnuala
Да, это возможно сделать с использованием API, но это довольно сложно. Siddharth Rout
+1 Хороший вопрос :) Siddharth Rout

Ваш Ответ

2   ответа
10

TRIED AND TESTED (Paste complete code in a module and run Sub Sample()

CODE LOGIC

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
Error: User Rate Limit ExceededPRINTSCREENError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded SteveValarenti
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededgo duck!Error: User Rate Limit Exceededkeybd_eventError: User Rate Limit ExceededSendKeysError: User Rate Limit ExceededPrntScrnError: User Rate Limit ExceededSendKeysError: User Rate Limit Exceeded
2
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

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

Похожие вопросы