想VBA的范围内做到这一点(其他用户没有其他的开发工具来修改)。 我知道,做类似的,但是想有这种尽可能通用的第三方应用程序(iMacros的,例如)的。 车间使用XP和Excel 2003。
(1)一种VBA子程序控制浏览器的InternetExplorer自动观看网站,表单提交,等
(2)是否有一种方式来获得从web浏览器内容的截屏? 没有杂乱的SendKeys方法? .NET有Webbrowser.DrawToBitmap方法,但找不到VBA一个简单的解决方案。 希望整个屏幕,其中包括“下面倍” - 下面的滚动条...
久经考验的(在一个模块中粘贴完整的代码和运行子样品()
代码逻辑
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