Используя данные из Интернета, как войти?
У меня есть макрос, который использует функцию "Данные из Интернета". Я вошел на веб-сайт (в Internet Explorer), с которого я извлекаю данные, но результаты, которые я получаю в Excel, продолжают повторять, что я не вошел в систему.
Есть ли особый способ входа через Excel для "данных из Интернета"? Я знаю, что это работает, так как я использовал Macro Recorder, чтобы узнать, как Excel получает данные - и, делая это вручную, веб-сайт попросил меня войти в "Окно браузера IE IE"... но прошло уже больше часа, поэтому я был отключен Как мне снова войти в систему, чтобы использовать его?
Вот соответствующий код извлечения данных, если он помогает (URL-адрес работает нормально после входа в систему):
With ActiveSheet.QueryTables.Add(Connection:="URL;" & theURL, Destination:=webInfoWS.Range("$A$2"))
.name = cel.Value & " hex"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "3"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
1 ответ
В то же время я нашел обходной путь (в основном из этой темы):
Добавление этого после Debug.Print "Opening " & theURL
и как раз перед With ActiveSheet.QueryTables.Add(...)
''' Log in to the web stuff
Set ie = CreateObject("InternetExplorer.Application")
With ie
.Visible = True
.Navigate theURL
Do Until .READYSTATE = 4
DoEvents
Loop
If Left(.Document.Title, 5) <> "Welcome!" Then
.Document.all.Item("username").Value = "My User Name"
.Document.all.Item("password").Value = "MyPassword"
.Document.forms(0).submit
End If
' .Quit
End With
''''''
На самом деле это открывает окно IE, затем (автоматически) вводит мое имя пользователя и пароль и отправляет.
Однако, если я запустил макрос еще раз (то есть, я уже вошел в систему), это выдает ошибку, потому что нет формы ввода имени пользователя / пароля.
Мысли о том, как обойти - использовать On Error Goto Next
, но я не люблю использовать это, но это может быть лучшим вариантом. Я думаю, что вместо этого я попытаюсь получить заголовок окна (через HTML) и проверить, является ли это формой входа в систему или нет...
Изменить: заметка о том, как узнать, что .Item("____")
является "username"
а также "password"
, Это происходит из тега HTML Input ID:
Вы заметите в посте, в котором я нашел это, текст в .Item()
отличается - я предполагаю, потому что этот HTML-идентификатор также отличается.
РЕДАКТИРОВАТЬ 2: Это не работает! Я могу войти, увидеть веб-страницу в IE, но когда я добираюсь до .Refresh BackgroundQuery:=False
Полученная информация - это текст, в котором говорится, что мне нужно войти: /