Home > Forum Home > Automating Data Analysis Tasks > Download Historical NAV form web Share

Download Historical NAV form web

Excel Help for Download Historical Nav Form Web in Automating Data Analysis Tasks


Forum TopicPost Reply Login

Download Historical Nav Form Web

Rate this:
(3/5 from 1 vote)
ConfusedHi

I use web query to download NAV form web site, i have recorded in macro. Now i want to download historical data in excel sheet form web in below mention format how can i do it through web query or macro
Excel Spreadsheet:
 ABC
1 Fund DATENAV 
2 Equity Growth Fund 1-Nov-09 
3 Bond Fund 5-Nov-09 
4 Income Fund 4-May-09 
5   


web site :http://www.idbifortis.com/TrackNAV.aspx?lm1=1

VBA Code:
Sub downloadnav()
Worksheets("sheet1").Activate
ActiveSheet.Cells.Clear
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.idbifortis.com/TrackNAV.aspx?lm1=1", Destination:=Range("A1") _
        )
        .Name = "TrackNAV.aspx?lm1=1"
                .RefreshStyle = xlInsertDeleteCells
               .WebFormatting = xlWebFormattingNone
        .WebTables = """DGNav"""
               .Refresh BackgroundQuery:=False
    End With
End Sub
 Posted by on
 
Replies - Displaying 1 to 5 of 5Order Replies By: Most Recent | Chronological | Highest Rated
Confused
Rate this:
(3/5 from 1 vote)
To get other dates for the same data (i.e. historical) you will need to send a form variable to the web query with the date value in the format required by the page: DD-MMM-YYYY.  The form variable name is "TxtDate".  To find out how to add post form variables in a web query, see this post.

You best approach would be to create a separate page for the web query results, loop through the dates required and with each call extract the data that you want into the desired sheet in the format that you require.  For this, you will need to loop through the dates in column B using a For Each...Next loop to call the web query with each date.
 Excel Business Forums Administrator
 Posted by on
Confused
Rate this:
(3/5 from 1 vote)
Hi

Thanks for reply, but i dont have proficiency in this language, Can you please assist further, as per my understanding i modify below mention code. How can i link sheet date with vba code, how to use loop statement.

Sub downloadnav()
Dim TxtDate As String
Const MyUrl As String = "URL;http://www.idbifortis.com/TrackNAV.aspx?lm1=1"
With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.idbifortis.com/TrackNAV.aspx?lm1=1", Destination:=Range("A1") _
        )
        .Name = "TrackNAV.aspx?lm1=1"
                .RefreshStyle = xlInsertDeleteCells
               .WebFormatting = xlWebFormattingNone
        .WebTables = """DGNav"""
               .Refresh BackgroundQuery:=False
    End With
End Sub

 Posted by on
Confused
Rate this:
(3/5 from 1 vote)
Dear Sir

I have done modification in web query but still, its not working, it download only current data, not the date entered in cell value i.e B5

I will greatly appreciate your any help on this

VBA Code:
Sub downloadnav()
   
   
    Dim bmonth, bday, byear, emonth, eday, eyear As Integer
    Dim wst As Worksheet
    Dim TxtDate As String
    Const MyUrl As String = "http://www.idbifortis.com/TrackNAV.aspx?lm1=1"
   

    bmonth = Month(Range("b5").Value)
    bday = Day(Range("b5").Value)
    byear = Year(Range("b5").Value)
       
   
   
    TxtDate = bmonth - 1 & "&b=" & bday & "&c=" & byear & "&d=" & emonth - 1 & "&g=d&q=q&s=" & "&y=0&x=.csv"
'Get the data
'-----------------------------------------------------------------------------------------------------
   Sheets.Add
    ActiveSheet.Name = "temp"
    Sheets("temp").Select
        varconnection = MyUrl & TxtDate
       
        With ActiveSheet.QueryTables.Add(Connection:= _
            "URL;" & varconnection, Destination:=Range( _
            "A1"))
            .Name = "TrackNAV.aspx?lm1=1"
                .RefreshStyle = xlInsertDeleteCells
               .WebFormatting = xlWebFormattingNone
        .WebTables = """DGNav"""
               .Refresh BackgroundQuery:=False
        End With
        End Sub

 Posted by on
Sad
Rate this:
(3/5 from 1 vote)
In your code you are sending variables in the URL.  You need to post them using the PostText command so that your code would look more like:

VBA Code:
Sub downloadnav()
Dim wst As Worksheet
Dim MyPost As String
Const MyUrl As String = "http://www.idbifortis.com/TrackNAV.aspx?lm1=1"
   
MyPost = "TxtDate=04-Nov-2009"
'This is where you need to build your string from the date cell
'It may be better to format you cell as dd-mmm-yyy
'and then just take StrDate = Range("B5").Text
'then use MyPost = "TxtDate=" & strDate

'There are more parameters required when you look at the
'source HTML of the page in question:

MyPost = MyPost & "&CboFund=0&CboFund=0"

'Get the data
'-----------------------------------------------------------------------------------------------------
Sheets.Add
ActiveSheet.Name = "temp"
Sheets("temp").Select

'varconnection = MyUrl & TxtDate
      
        With ActiveSheet.QueryTables.Add(Connection:= _
            "URL;" & MyUrl, Destination:=Cells(1, 1))
            .PostText = MyPost
            .BackgroundQuery = True
            .TablesOnlyFromHTML = True
            .Refresh BackgroundQuery:=False
            .SaveData = True
        End With
End Sub

The page also has a session variable that you may need to capture first and post back. To do this is a bit more complicated but it is detailed in this post.

 Excel Business Forums Administrator
 Posted by on
Confused
Rate this:
(3/5 from 1 vote)
Hi

Sorry to write back, I have go through many web pages to find the code similar to it or method but i didnt get any. Can you send me any link where i can learn this. i dont understand whts wrong in
below mention code.

VBA Code:
Sub downloadnav()
Dim wst As Worksheet
Dim StrDate As String
Dim MyPost As String
Const MyUrl As String = "http://www.idbifortis.com/TrackNAV.aspx?lm1=1"
   
'MyPost = "TxtDate=04-Nov-2009"
'This is where you need to build your string from the date cell
'It may be better to format you cell as dd-mmm-yyy
 StrDate = Range("B5").Text
 MyPost = "TxtDate=" & StrDate
'There are more parameters required when you look at the
'source HTML of the page in question:
 MyPost = MyPost & "&CboFund=0&CboFund=0"
Sheets.Add
ActiveSheet.Name = "temp"
Sheets("temp").Select
'varconnection = MyUrl & TxtDate
      
        With ActiveSheet.QueryTables.Add(Connection:= _
            "URL;" & MyUrl, Destination:=Cells(1, 1))
            .PostText = MyPost
            .BackgroundQuery = True
            .TablesOnlyFromHTML = True
            .Refresh BackgroundQuery:=False
            .SaveData = True
        End With
End Sub

 Posted by on
 Displaying page 1 of 1 

Find relevant Excel templates and add-ins for Download Historical NAV form web in the