वीबीए कोड विशिष्ट आईई विंडो के साथ बातचीत करने के लिए जो पहले से ही खुला है

ऊपर वीबीए में शेल अनुप्रयोगों का उपयोग करके आईई के पहले से खुले उदाहरण को खोजने और जाने के लिए एक धागा है। मुझे खुले आईई इंस्टेंस के बाद मैं ढूंढ रहा हूं, मुझे उस यूआरएल का उपयोग किए बिना उस आईई पेज से टेबल से पूछताछ करने की ज़रूरत है। इसका कारण यह है कि मैं इसके URL का उपयोग नहीं कर सकता क्योंकि यह IE पृष्ठ एक सामान्य 'परिणाम' पृष्ठ है जो मुख्य वेबसाइट पर खोज करने के बाद एक अलग विंडो में खुलता है, इसलिए यदि मैं परिणाम पृष्ठ के URL का उपयोग करता हूं, जो है: < a href="https://a836-acris.nyc.gov/DS/DocumentSearch/BBLResult" rel="nofollow noreferrer">https://a836-acris.nyc.gov/DS/DocumentSearch/BBLResult , यह एक त्रुटि लौटाएगा। क्या कोई अन्य विधियाँ हैं जो URL कनेक्शन का उपयोग किए बिना तालिकाओं को क्वेरी करने की अनुमति देती हैं, जैसे तालिकाओं के लिए "getElements"?

के.डेविस, टिम विलियम: आप अपनी धारणाओं में सही हैं। मेरे कोड/प्रोजेक्ट का पहला भाग एक खोज पृष्ठ खोलता है: objIE.navigate "https: //a836-acris.nyc.gov/DS/DocumentSearch/BBL" और इसके माध्यम से मैं एक खोज फ़ॉर्म सबमिट करता हूं। दूसरा भाग (पहले पैराग्राफ में ऊपर उल्लिखित) एक परिणाम पृष्ठ (पॉप-अप) खोलता है। मैं उस पृष्ठ से तालिकाओं की पुनर्प्राप्ति को स्वचालित करने का प्रयास कर रहा हूं। मैंने QueryTables.Add विधि का उपयोग करने का प्रयास किया, जिस तरह से मैं डेटा/वेबपृष्ठ से कनेक्ट करने के लिए परिचित हूं, एक यूआरएल की आवश्यकता है। यदि मैं परिणाम पृष्ठ से यूआरएल का उपयोग करता हूं तो यह एक त्रुटि देता है, इस प्रकार मैं सुझाव/सहायता की तलाश में हूं कि मैं अन्यथा कैसे कनेक्ट कर सकता हूं। उस ने कहा कि मैं 'getElements' विधि का उपयोग करके पृष्ठ के तत्वों को पुनर्प्राप्त करने में सक्षम हूं लेकिन तालिकाओं से पूछताछ करने में सक्षम नहीं हूं। QueryTables का उपयोग करके डेटा स्रोत से कनेक्ट करने के अन्य तरीके हैं। विधि जोड़ें, देखें, https://docs.microsoft.com/en-us/office/vba/api/excel.querytables.add लेकिन मैं इन अन्य तरीकों से परिचित नहीं हूं। आशा है कि यह थोड़ा स्पष्ट करता है।

0
Skeys 24 अक्टूबर 2018, 02:03

1 उत्तर

सबसे बढ़िया उत्तर

मुझे इसके साथ कोई समस्या नहीं हुई है, हालांकि आपके पास मध्यवर्ती विंडो है, अंतिम आईई विंडो फोकस के साथ मुख्य आईई विंडो होने का समाधान करती है। मैं संकेतित खोज मापदंडों का उपयोग करके निम्नलिखित कोड के साथ परिणाम तालिका को हथियाने में सक्षम था:

Option Explicit
Public Sub GetInfo()
    Dim IE As New InternetExplorer
    With IE
        .Visible = True
        .navigate "https://a836-acris.nyc.gov/DS/DocumentSearch/BBL"

        While .Busy Or .readyState < 4: DoEvents: Wend

        With .document
            .querySelector("option[value='3']").Selected = True
            .querySelector("[name=edt_block]").Value = 1
            .querySelector("[name=edt_lot]").Value = "0000"
            .querySelector("[name=Submit2]").Click
        End With

        While .Busy Or .readyState < 4: DoEvents: Wend

        Dim hTable As HTMLTable

        Set hTable = .document.getElementsByTagName("table")(6)

        'do stuff with table

        .Quit
    End With
End Sub

आप क्लिपबोर्ड के माध्यम से तालिका की प्रतिलिपि बना सकते हैं। कोई भी टिक वाइंडिंग सही जगह पर दिखाई देती है लेकिन खाली आइकन के रूप में।

क्लिपबोर्ड के लिए अर्ली बाउंड वीबीई> टूल्स> रेफरेंस> माइक्रोसॉफ्ट-फॉर्म्स 2.0 ऑब्जेक्ट लाइब्रेरी पर जाएं।

यदि आप अपने प्रोजेक्ट में UserForm जोड़ते हैं, तो लाइब्रेरी अपने आप जुड़ जाएगी।

Dim clipboard As DataObject
Set clipboard = New DataObject
clipboard.SetText hTable.outerHTML
clipboard.PutInClipboard
ThisWorkbook.Worksheets("Sheet1").Cells(1, 1).PasteSpecial

देर से बाध्य उपयोग

Dim clipboard As Object
Set clipboard =  GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
0
QHarr 24 अक्टूबर 2018, 12:27