I'm using Excel 2010 to retrieve Mutual Fund information.
Let's say I enter ticker symbols for 5 mutual funds.
7 out of 10 times it'll be perfect.
Where it goofs up is inconsistent. Examples:
- Of the 5 tickers, it'll grab the first 2 (or 3) Maximum Sales Loads, miss the last 3 (or 2), then go on and get all 5 fund names and all 5 current quotes
- It'll grab all 5 Sales Loads, the quotes and none of the names
Maybe an internet page is still loading but the code has already moved on?
I also realize that I have no error-handling notifications built in to let a user know what's going on.
How can this code be tightened up?
Sub LoopAllSymbols_RetrieveDataCZY() ' Local Variables Dim rngLookUpSym As Range, rngQuerySym As Range, rngQuerySymCo As Range Dim rngQuerySymData As Range Dim qryTableFunds As QueryTable Dim FS As Worksheet Dim QS As Worksheet Set FS = Worksheets("Fund Symbols") Set QS = Worksheets("Web Query Page") 'Unprotect Sheets FS.Unprotect QS.Unprotect ' Clear old contents FS.Range("B2:F100").ClearContents ' Step 1 : Set Data Ranges for Sale Load Set rngLookUpSym = Worksheets("Fund Symbols").Range("A2") Set rngQuerySym = Worksheets("Web Query Page").Range("A1") Set rngQuerySymCo = Worksheets("Web Query Page").Range("B7") 'Set rngQuerySymData = Worksheets("Web Query Page").Range("A5").Range("E1:P1") Set qryTableFunds = ThisWorkbook.Worksheets("Web Query Page").QueryTables(1) On Error Resume Next ' Step 2 : Loop through list of Funds and retrieve Sales Load Do While rngLookUpSym <> "" rngQuerySym = rngLookUpSym With qryTableFunds .Connection = _ "URL;http://finance.yahoo.com/q/pr?s=" & rngQuerySym & "+profile" .WebSelectionType = xlSpecifiedTables .WebFormatting = xlWebFormattingAll .WebTables = "36" .WebPreFormattedTextToColumns = True .WebConsecutiveDelimitersAsOne = True .WebSingleBlockTextImport = False .WebDisableDateRecognition = False .Refresh BackgroundQuery:=False End With rngLookUpSym.Range("D1") = rngQuerySymCo 'rngLookUpSym.Range("E1:P1") = rngQuerySymData.Value Set rngLookUpSym = rngLookUpSym.Offset(1, 0) Loop ' Step 3 : Set Data Ranges for Company Names Set rngLookUpSym = Worksheets("Fund Symbols").Range("A2") Set rngQuerySym = Worksheets("Web Query Page").Range("A1") Set rngQuerySymCo = Worksheets("Web Query Page").Range("A5") Set rngQuerySymData = Worksheets("Web Query Page").Range("A5").Range("D1") Set qryTableFunds = ThisWorkbook.Worksheets("Web Query Page").QueryTables(1) ' Step 4 : Loop through list of mutual fund symbols and retrieve Names Do While rngLookUpSym <> "" rngQuerySym = rngLookUpSym With qryTableFunds .Connection = _ "URL;http://moneycentral.msn.com/investor/external/excel/quotes.asp?SYMBOL=" & rngQuerySym .WebSelectionType = xlEntirePage .WebFormatting = xlWebFormattingAll .WebPreFormattedTextToColumns = True .WebConsecutiveDelimitersAsOne = True .WebSingleBlockTextImport = False .WebDisableDateRecognition = False .Refresh BackgroundQuery:=False End With rngLookUpSym.Range("B1") = rngQuerySymCo rngQuerySymData.Copy Destination:=rngLookUpSym.Range("F1") 'rngLookUpSym.Range("F1:K1") = rngQuerySymData.Value Set rngLookUpSym = rngLookUpSym.Offset(1, 0) Loop ' Step 5 : Set Data Ranges for Quotes Set rngLookUpSym = Worksheets("Fund Symbols").Range("A2") Set rngQuerySym = Worksheets("Web Query Page").Range("A1") Set rngQuerySymCo = Worksheets("Web Query Page").Range("D5") Set rngQuerySymData = Worksheets("Web Query Page").Range("D5").Range("A1") Set qryTableFunds = ThisWorkbook.Worksheets("Web Query Page").QueryTables(1) ' Step 6 : Loop through list of mutual fund symbols and retrieve Quotes Do While rngLookUpSym <> "" rngQuerySym = rngLookUpSym With qryTableFunds .Connection = _ "URL;http://moneycentral.msn.com/investor/external/excel/quotes.asp?SYMBOL=" & rngQuerySym .WebSelectionType = xlEntirePage .WebFormatting = xlWebFormattingNone .WebPreFormattedTextToColumns = True .WebConsecutiveDelimitersAsOne = True .WebSingleBlockTextImport = False .WebDisableDateRecognition = False .Refresh BackgroundQuery:=False End With rngLookUpSym.Range("F1") = rngQuerySymCo 'rngQuerySymData.Copy Destination:=rngLookUpSym.Range("F1") rngLookUpSym.Range("F1") = rngQuerySymData.Value Set rngLookUpSym = rngLookUpSym.Offset(1, 0) Loop rngLookUpSym.Range("L9") = Format(Date, "MM-dd-yy") rngLookUpSym.Range("L10") = Format(Time, "[$-409]h:mm AM/PM;@") FS.Protect QS.Protect End Sub
I've just discovered that 3 people tried to run this macro and can't get it to run. But, for me, it runs inconsistently.
Help is appreciated in determining what's wrong with this coding.
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks