Automate saveas dialogue for IE9 (vba) Automate saveas dialogue for IE9 (vba) vba vba

Automate saveas dialogue for IE9 (vba)


You may try this as it is worked for me on IE9:

For below showed download

  1. Copy file C:\Windows\System32\UIAutomationCore.dll file to users Documents i.e C:\Users\admin\Documents then add reference UIAutomationClient to your macro file.
  2. Paste below code in your module:

        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 LongPtrSub 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.InvokeEnd Sub   

Try at your end.


'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-referencesOption 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_PTRSub click_open()  Dim o As IUIAutomation  Dim e As IUIAutomationElement  Dim sh  Dim eachIEDo    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 LoopSet o = New CUIAutomationh = ie.Hwndh = FindWindowEx(h, 0, "Frame Notification Bar", vbNullString)If h = 0 Then Exit SubSet e = o.ElementFromHandle(ByVal h)Dim iCnd As IUIAutomationConditionSet iCnd = o.CreatePropertyCondition(UIA_NamePropertyId, "Open")Dim Button As IUIAutomationElementSet Button = e.FindFirst(TreeScope_Subtree, iCnd)Dim InvokePattern As IUIAutomationInvokePatternSet InvokePattern = Button.GetCurrentPattern(UIA_InvokePatternId)InvokePattern.InvokeEnd Sub


I sent the shortcut keys to IE11.

Note: the code will not run as you expect if IE is not the active window on your machine so it won't work while in debug mode. The shortcut keys and how to send them are below.

  • Shortcut key:Alt+S
  • VBA: Application.SendKeys "%{S}"