2012-05-25 14 views
8

वीबीए की सीमाओं के भीतर ऐसा करना चाहते हैं (अन्य उपयोगकर्ताओं के पास संशोधित करने के लिए कोई अन्य विकास उपकरण नहीं है)। मुझे तृतीय पक्ष ऐप्स (उदाहरण के लिए iMacros) के बारे में पता है, जो समान है लेकिन इसे जितना संभव हो उतना सामान्य बनाना चाहते हैं। दुकान का उपयोग करता है XP और एक्सेल 2003.वीबीए वेब ब्राउजर पूर्ण स्क्रीन पर कब्जा

(1) एक VBA सबरूटीन, फ़ॉर्म सबमिट देखने वेबसाइट को स्वचालित करने के लिए एक InternetExplorer ब्राउज़र नियंत्रित कर रहा है आदि

(2) वहाँ एक रास्ता पाने के लिए है WebBrowser की सामग्री से एक स्क्रीन कैप्चर? गन्दा SendKeys दृष्टिकोण के बिना? .NET में एक Webbrowser है। DrawToBitmap विधि लेकिन वीबीए के लिए एक आसान समाधान नहीं मिल सकता है। पूरे स्क्रीन चाहते हैं, "तह के नीचे" सहित - स्क्रॉल बार नीचे ...

+1

पीडीएफ किसी भी उपयोग? यदि ऐसा है, तो आप प्रिंट कर सकते हैं। – Fionnuala

+0

हां एपीआई का उपयोग करके इसे करना संभव है लेकिन यह जटिल है। –

+0

+ 1 अच्छा सवाल :) –

उत्तर

10

कोशिश की और परीक्षण (एक मॉड्यूल में पूरा कूट डालें और उप नमूना चलाने()

कोड लॉजिक

1) इस कोड को खुल जाएगा आईई

2) नेविगेट Google.com

को 10

3) अधिकतम आईई

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 
+0

+1 ठंडा! बस इसका परीक्षण किया और यह उल्लेख के अनुसार काम करता है;) –

+0

मेरे परीक्षण में, केवल वेबपृष्ठ नहीं मिल रहा है - स्क्रॉल बार भी प्राप्त हो रहा है, लेकिन यह एक शुरुआत है। धन्यवाद। – SteveValarenti

+0

दुर्भाग्य से, आपको पूरी स्क्रीन का स्नैपशॉट मिलेगा। यह IE को अधिकतम करने के बाद 'प्रिंटरस्क्रीन' दबाकर है। –

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 

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 
संबंधित मुद्दे