2014-09-25 69 views

回答

9

,因爲它是爲我工作在IE9你可以試試這個:

For below showed download

  1. 複製文件C:\Windows\System32\UIAutomationCore.dll文件到用戶的文檔即C:\Users\admin\Documents然後添加到您的宏文件的參考UIAutomationClient
  2. 粘貼下面的代碼你的模塊中:

    Option Explicit 
        Dim ie As InternetExplorer 
        Dim h As LongPtr 
        Private Declare PtrSafe Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As LongPtr, ByVal hWnd2 As LongPtr, ByVal lpsz1 As String, ByVal lpsz2 As String) As LongPtr 
    
    Sub Download() 
        Dim o As IUIAutomation 
        Dim e As IUIAutomationElement 
        Set o = New CUIAutomation 
        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 
    

試着在你結束。

+1

當我試圖添加refernence到UIAutomationClient它拋出一個錯誤: 「加載DLL時出錯」。 – ramses1592 2014-11-21 13:42:56

+2

你必須將UIAutomationCore.dll文件複製到你的文檔文件夾中。 – Lifewithsun 2014-11-21 15:17:26

+1

'PtrSafe'沒有被識別。它說*預期:子或功能* – xameeramir 2015-09-15 11:15:58

0
'This is a working code for vba in excel 2007 to open a file 
'But you need to add the "UIAutomationCore.dll" to be copied 
'from "C:\Windows\System32\UIAutomationCore.dll" into the 
'path "C:\Users\admin\Documents"  
'The path where to copy may be different and you can find it when you check on 
'the box for UIAutomationClient - the location is given under it. 
'Tools-references 

Option Explicit 
    Dim ie As InternetExplorer 
    Dim h As LONG_PTR 
    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As LONG_PTR, ByVal hWnd2 As LONG_PTR, ByVal lpsz1 As String, ByVal lpsz2 As String) As LONG_PTR 


Sub click_open() 
    Dim o As IUIAutomation 
    Dim e As IUIAutomationElement 
    Dim sh 
    Dim eachIE 

Do 

    Set sh = New Shell32.Shell 
    For Each eachIE In sh.Windows 
     ' Check if this is the desired URL 

    ' Here you can use your condition except .html 
    ' If you want to use your URL , then put the URL below in the code for condition check. 
    ' This code will reassign your IE object with the same reference for navigation and your issue will resolve. 
     If InStr(1, eachIE.LocationURL, "<enter your page url>") Then 
     Set ie = eachIE 
     Exit Do 
     End If 
    Next eachIE 
Loop 

Set o = New CUIAutomation 
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, "Open") 


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 
0

我將快捷鍵發送到IE11。

注意:如果IE不是您計算機上的活動窗口,代碼將無法按預期運行,因此在調試模式下它將不起作用。下面是快捷鍵以及如何發送它們。

  • 快捷鍵:Alt鍵+小號
  • VBA:Application.SendKeys "%{S}"