0

I am able to download and open file and i need to copy data from downloaded file and paste to other file. The problem is that sometimes is working sometimes is not working, I didnt get the point where is the mistake. I also need to wait until downloading completed. To wait until downloading progress, I put a popup message (MsgBox "Download Successful, Click OK") Because I havent found a solution. If there is a option, I would like to remove the popup. Download File name start with SEARCH thats why I am looking for a key word but sometimes, application doesnt see as active workbook.Download progress and open file is successful but sometimes active sheet is not recognizing by excel. One of the option I can save and open it, if it possible i can do it or open the file and wait until download progress and copy data from SEARCH...xlsx file. HOW can wait until download progress and application can see the workbook?

I have tried to merge this code to my code but I havent done it. VBA code to wait until file download from IE is complete

Dim HTMLDoc As HTMLDocument
Dim login As InternetExplorer

Sub Login_Website()

Dim oHTML_Element As IHTMLElement
Dim login_URL As String
On Error GoTo Err_Clear
' This is login URL to website
login_URL = "Website URL"
Set login = New InternetExplorer ' The object for the login
' Timeout set for the web browser
login.Silent = True
login.timeout = 60

' This parts making Visible or not_Visible
login.Visible = True

Do
' Wait till the Browser is loaded
Loop Until login.readyState = READYSTATE_COMPLETE

Set HTMLDoc = login.document
HTMLDoc.all.os_username.Value = "username"
HTMLDoc.all.os_password.Value = "password"
HTMLDoc.all.Item("login").Click

' To submit Login
For Each oHTML_Element In HTMLDoc.getElementsByTagName("login")
If oHTML_Element.Type = "submit" Then oHTML_Element.Click: Exit For
Next

Do Until login.readyState = READYSTATE_COMPLETE: DoEvents: Loop


'THE PROBLEM IS STARTING FROM THIS POINT

Dim o As IUIAutomation
Dim e As IUIAutomationElement, download_check As IUIAutomationElement
Set o = New CUIAutomation
Dim h As Long
h = login.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

MsgBox "Download Successful, Click OK"

    ' This part searching active workbook
    Dim xWBName As String
    Dim GetBook As String
    Dim xWb As Workbook
    For Each xWb In Application.Workbooks
        'xWBName = xWb.Name 'xWBName & xWb.Name & vbCrLf
        If InStr(xWb.Name, "Search") Then
         GetBook = xWb.Name

        End If
    Next

 'Activate the required workbook
 Workbooks(GetBook).Activate

Pᴇʜ
  • 56,719
  • 10
  • 49
  • 73
Nobody
  • 79
  • 13
  • 1
    What error it throws when 'sometimes it not working'? You could add breakpoints to debug the code. You could also refer to [this thread](https://stackoverflow.com/questions/48560702/vba-ie-automation-wait-for-the-download-to-complete) to check out the solution of waiting for download to complete. – Yu Zhou Jul 29 '19 at 03:52
  • Thanks it is working, I used it – Nobody Aug 01 '19 at 11:40

0 Answers0