I have the requirement where I have to login to site through code and then download the report file by navigating to certain location. I have successfully logged in and also reached to the URL of file download but not able to automatically save it to disk. Below is my code
Imports SHDocVw
Imports mshtml
Imports System.Net
Module Module1
Dim HTMLDoc As HTMLDocument
Dim MyBrowser As InternetExplorer
Sub Main()
MyGmail()
End Sub
Sub MyGmail()
Dim MyHTML_Element As IHTMLElement
Dim MyURL As String
On Error GoTo Err_Clear
MyURL = "https://example.com/"
MyBrowser = New InternetExplorer
MyBrowser.Silent = True
MyBrowser.Navigate(MyURL)
MyBrowser.Visible = True
Do
Loop Until MyBrowser.ReadyState = tagREADYSTATE.READYSTATE_COMPLETE
HTMLDoc = MyBrowser.Document
HTMLDoc.all.txtUserID.Value = "xyz@example.com" 'Enter your email id here
HTMLDoc.all.txtPassword.Value = "test123" 'Enter your password here
For Each MyHTML_Element In HTMLDoc.getElementsByTagName("input")
If MyHTML_Element.Type = "submit" Then MyHTML_Element.click() : Exit For
Next
'Navigate to reports folder
Dim newReportURL As String
newReportURL = "https://some_static_url_to_navigate"
MyBrowser.Navigate(newReportURL)
Dim i As Integer
Dim reportURL As String
reportURL = ""
i = 0
For Each MyHTML_Element In HTMLDoc.getElementsByTagName("a")
If DirectCast(MyHTML_Element, mshtml.IHTMLAnchorElement).innerText = "Export" And i = 1 Then
reportURL = DirectCast(MyHTML_Element, mshtml.IHTMLAnchorElement).href
End If
If DirectCast(MyHTML_Element, mshtml.IHTMLAnchorElement).innerText = "Export" Then
i = i + 1
End If
Next
MyBrowser.Navigate(reportURL)
For Each MyHTML_Element In HTMLDoc.getElementsByTagName("input")
If MyHTML_Element.Type = "submit" Then
MyHTML_Element.click() : Exit For
End If
Next
Dim xlsReportURL As String
xlsReportURL = DirectCast(MyBrowser.Document, mshtml.IHTMLDocument).url
Err_Clear:
If Err.Number <> 0 Then
Err.Clear()
Resume Next
End If
End Sub
End Module
The last variable xlsReportURL contains my report url which is in .xls format. How can i save this report directly to my hard disk?