Click here to Skip to main content
15,885,366 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
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
VB
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?
Posted

1 solution

Use this Link[^] to do what you want.
 
Share this answer
 
Comments
Dexter11 13-Jul-15 5:31am    
I can't use WebClient as i have already established connection using above method and using WebClient will start new session and redirect me to login page again.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900