illustrator - como grabar pantalla en excel
VBA WebBrowser captura la pantalla completa (2)
INTENTADO Y PROBADO (pegue el código completo en un módulo y ejecute Submuestra ()
CÓDIGO LÓGICO
1) Este código se abrirá IE
2) Navega a Google.com
3) Maximizar IE
4) tomar instantánea
5) Lanzar MSPaint
6) Pegar en 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
Me gustaría hacer esto dentro de los límites de VBA (otros usuarios no tienen otras herramientas de desarrollo para modificar). Estoy al tanto de aplicaciones de terceros (iMacros, por ejemplo) que hacen similares pero quieren que esto sea lo más genérico posible. La tienda usa XP y Excel 2003.
(1) Una subrutina de VBA controla un navegador de InternetExplorer para automatizar la visualización del sitio web, los envíos de formularios, etc.
(2) ¿Hay alguna manera de obtener una captura de pantalla de los contenidos de WebBrowser? Sin enfoques SendKeys desordenados? .NET tiene un método Webbrowser.DrawToBitmap pero no puede encontrar una solución fácil para VBA. Quiere toda la pantalla, incluso "debajo del pliegue", debajo de las barras de desplazamiento ...
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