मैं इसे पूरा करने के लिए वीबीए का उपयोग करने तक ही सीमित हूं। लक्ष्य प्रोग्रामेटिक रूप से एक नई आईई विंडो खोलना है जो पहले से खुली खिड़की का डुप्लिकेट है। मुझे इस विंडो को सीमित समय के लिए प्रदर्शित करने की आवश्यकता है (इस उदाहरण में मैं 15 सेकंड प्रतीक्षा कर रहा हूं), फिर मैं अपने द्वारा खोली गई दो IE विंडो में से एक को बंद करना चाहता हूं। मैंने कुछ उदाहरणों से कोड अंशों को एक साथ जोड़ दिया है और यह आंशिक रूप से काम कर रहा है, लेकिन परिणाम वैसा नहीं है जैसा मैं उम्मीद करूंगा।

  • सबसे पहले मैं आईई उदाहरणों को ढूंढने में सक्षम हूं लेकिन फिर भी मुझे लगता है कि मैंने बाहर निकलने के लिए कोड किया है, दोनों खिड़कियां बंद हैं।
  • डिबगिंग के लिए मैं जिस MsgBox का उपयोग कर रहा हूं वह कभी प्रकट नहीं होता है।
  • कोड के प्रत्येक रन के साथ नीचे त्रुटि संदेश दिखाई देता है

enter image description here

नीचे वह कोड है जिसे मैं काम करने की कोशिश कर रहा हूं, लेकिन असफल रहा हूं।

Private Sub OpenReport()
Dim IE
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.Navigate "http://~~~~~~~~~.net/reports/views/result/reportResult.faces"
' Wait for a period of time contained in TimeValue
Application.Wait (Now + TimeValue("00:00:15"))
' Now close ONE of the IE windows (Currently closing all of them)
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * From Win32_Process")
' Find IE Instances
For Each objItem In colItems
    If objItem.Name = "iexplore.exe" Then
        On Error Resume Next
        objItem.Terminate ' Terminates all instead of exiting after finding one IE window
        MsgBox objItem.Name & " " & objItem.ProcessID & " " & objItem.CommandLine 'Doesn't appear
        Exit For
    End If
Next
End Sub
0
Ken Carter 26 पद 2019, 18:18

1 उत्तर

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

मैं इनपुट की सराहना करता हूं लेकिन इसे काम करने के लिए थोड़ा अलग मार्ग जाना पड़ा जैसा कि इसे करना चाहिए ...

आईई के एक उदाहरण को बंद करने की कुंजी टास्ककिल (कमांडलाइन डब्ल्यूस्क्रिप्ट) का उपयोग करके हल की गई थी।

नीचे पूर्ण समाधान है

Private Sub OpenReport()
Dim IE
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.Navigate "http://~~~~~~~~~~~net/reports/views/result/reportResult.faces"
' Wait for a period of time contained in TimeValue
Application.Wait (Now + TimeValue("00:00:15"))
' Now close ONE of the IE windows (Currently closing all of them)
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * From Win32_Process")
' Find an IE instance
For Each objitem In colItems
    If objitem.Name = "iexplore.exe" Then
        On Error Resume Next

        Shell ("TaskKill /PID " & objitem.ProcessID)

    Exit For
    End If
Next
End Sub
0
Ken Carter 27 पद 2019, 13:37