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