2016-06-10 9 views
0

Ich bin an einem Punkt in der Automatisierung eines Prozesses, wo ich auf die Frame-Benachrichtigungsleiste in IE11 zugreifen muss - Ich habe den folgenden Code nützlich gefunden, aber erhalten Sie einen "Typ Mismatch" auf die LinieIE11 Frame-Benachrichtigungsleiste - Klicken Sie auf "Speichern"

h = ie.Hwnd

Ist es, weil ich IE als internetexplorermedium erklärt haben?

Option Explicit 

Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 

Private Declare PtrSafe Function FindWindowEx Lib "user32" Alias "FindWindowExA" _ 
(ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, _ 
ByVal lpsz2 As String) As Long 

Sub lime() 
Application.DisplayAlerts = False 
Dim ie As SHDocVw.InternetExplorer 
Dim doc As HTMLDocument 
Set ie = CreateObject("InternetExplorer.Application") 
Set ie = New InternetExplorerMedium 
ie.Visible = True 
ie.Navigate ("http://xxx/") 
Doodly ie 
Muddly ie 
Set doc = ie.Document 

doc.getElementById("ctl32_ctl04_ctl03_ddValue").Value = "4" 

doc.parentWindow.execScript "__doPostBack('ctl32$ctl04$ctl03$ddValue','')", "JavaScript" 

Application.Wait (Now() + TimeValue("00:00:05")) 

doc.getElementById("ctl32_ctl04_ctl05_ddValue").Value = "1" 

doc.getElementById("ctl32_ctl04_ctl00").Click 

Application.Wait (Now() + TimeValue("00:00:05")) 

doc.parentWindow.execScript "$find('ctl32').exportReport('EXCELOPENXML')", "JavaScript" 

Application.Wait (Now() + TimeValue("00:00:05")) 


Dim o As IUIAutomation 
Dim e As IUIAutomationElement 
Set o = New CUIAutomation 
Dim h As Long 
h = ie.Hwnd 
h = FindWindowEx(h, 0, "Frame Notification Bar", vbNullString) 
If h = 0 Then Exit Sub 

Set e = o.ElementFromHandle(ByVal h) 
Dim iCnd As IUIAutomationCondition 
Set iCnd = o.CreatePropertyCondition(UIA_NamePropertyId, "Save") 

Dim Button As IUIAutomationElement 
Set Button = e.FindFirst(TreeScope_Subtree, iCnd) 
Dim InvokePattern As IUIAutomationInvokePattern 
Set InvokePattern = Button.GetCurrentPattern(UIA_InvokePatternId) 
InvokePattern.Invoke 

End Sub 

Sub Doodly(ie) 
Do 
    DoEvents 
Loop Until ie.readystate = 4 
End Sub 

Sub Muddly(ie) 
Do While ie.busy 
    DoEvents 
Loop 
End Sub 

Antwort

0

ich keinen Fehler, wenn das richtig tun nach dem Navigieren

Erster Schritt, es zu kompilieren zu erhalten ist - vermutlich, bevor Sie hier kommen Versuchen Sie, diese

ersetzen

Dim ie As SHDocVw.InternetExplorer 
Set ie = New InternetExplorerMedium 

Mit

Dim ie As Object 

Vor

Set ie = CreateObject("InternetExplorer.Application") 
+0

das Projekt nicht kompilieren, erhalte ich eine „Typenkonflikt“ Fehler auf der Zeile „h = ie.Hwnd“, bin ich einen Verweis oder etwas fehlt? Excel 2010 – antd

+0

Haben Sie "Dim ie As SHDocVw.InternetExplorer" manuell eingegeben - oder bietet IntelliSense Ihnen das SHDoc-Schlüsselwort während der Eingabe an? – dbmitch

+0

Ich habe alles manuell hinzugefügt Ich habe IntelliSense nicht verwendet – antd