2013-12-22 2 views
0

Используя Macro Recorder, а затем сделав несколько изменений, я настроил макрос, чтобы перейти на страницу котировок акций Fidelity для нескольких кавычек и загрузить задерживаемые кавычки. Это хорошо работает. Однако, если я зарегистрирован в Fidelity и получаю доступ к этой же странице вручную, я могу получить кавычки в реальном времени. «Вход» может иметь место до или после доступа к странице. Мне не удалось выяснить, как добавить процесс регистрации в процедуру VBA, которая обрабатывает все остальное. Макро-рекордер, начатый до того, как я выберет «получить внешние данные из веб-опциона», не получает процесс регистрации при обращении к этой странице для котировок в реальном времени.Сценарий для реального времени Цитаты из Fidelity

Вот часть функции, которая фактически вызывает котировку акций страницы и просит цитаты:

With Worksheets("fidotemp").QueryTables.Add(Connection:=Connection, _ 
    Destination:=Range("a1")) 
    .name = Symbol 
    .FieldNames = True 
    .RowNumbers = False 
    .FillAdjacentFormulas = False 
    .PreserveFormatting = True 
    .RefreshOnFileOpen = False 
    .BackgroundQuery = True 
    .RefreshStyle = xlInsertDeleteCells 
    .SavePassword = False 
    .SaveData = True 
    .AdjustColumnWidth = True 
    .RefreshPeriod = 0 
    .WebSelectionType = xlSpecifiedTables 
    .WebFormatting = xlWebFormattingNone 
    .WebTables = IIf(bSymbol, "12", "9") 
    .WebPreFormattedTextToColumns = True 
    .WebConsecutiveDelimitersAsOne = True 
    .WebSingleBlockTextImport = False 
    .WebDisableDateRecognition = False 
    .WebDisableRedirections = False 
    .Refresh BackgroundQuery:=False 
    End With 

параметр Connection, с именем Connection, является строка, которая включает в себя конкретную страницу, вместе с правильно отформатированную строку, чтобы получить один или несколько цитат Когда несколько цитат запрашиваются, тикер. символы «+» разделены и ограничены длиной в 100 символов.

Пример Строка подключения может выглядеть так:

URL;https://fastquote.fidelity.com/webxpress/get_quote?QUOTE_TYPE=D&SID_VALUE_ID=VIP+SAN+E+MT+BCE+RAI+SNP+BP+MO+PTR&submit=Quote 

ответ

0

Входит ли с www.fidelity.com приемлемый? Если да, то в чем это привело вас?

Sub test() 
' open IE, navigate to the Fidelity log-in webpage of interest and loop until fully loaded 
    Set IE = CreateObject("InternetExplorer.Application") 
    login_url = "https://www.fidelity.com" 

    With IE 
     .Visible = True 
     .navigate login_url 
     .Top = 50 
     .Left = 130 
     .Height = 800 
     .Width = 800 
    End With 

    Do Until Not IE.Busy And IE.ReadyState = 4 
     DoEvents 
    Loop 

' Enter your username and pw 
    IE.document.getElementById("temp_id").Value = "abcde" 
    IE.document.getElementById("PIN").Value = "12345" 

' Click the login button 
    IE.document.getElementById("logButton").disabled = False 
    IE.document.getElementById("logButton").Click 
End Sub 
+0

Спасибо. Почти работает. Я помещал ваш макрос в отдельный Sub, чтобы не путать вещи. НО страница IE возвращает «имя пользователя или пароль ... не правильно», ЕСЛИ я не добавляю точку останова в строке «Отправить» в макросе, а затем продолжить (F5); или я вручную выбираю кнопку входа на страницу. До этого события IE.ReadyState - 4; и вход в приложение. Подождите десять секунд (гораздо дольше, чем я действительно ждал) не удался -> успешный вход в систему. Мысли? –

+0

кажется, что он ведет себя правильно, когда я «шагаю» через макрос (F8), а не когда я запускаю его! – ron

+0

Пробовал отредактированную версию, и она ведет себя так же, как и первый - успешный вход в систему. Я останавливаю макрос (с точкой останова), а затем выбираю «Вход вручную» в окне; или если я остановлю Sub с точкой останова и затем продолжу макрос. Также, если я пройду через все это; но я думаю, что нужно только «шагнуть» непосредственно перед линией .submit –

Смежные вопросы