Используя данные из Интернета, как войти?

У меня есть макрос, который использует функцию "Данные из Интернета". Я вошел на веб-сайт (в 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Полученная информация - это текст, в котором говорится, что мне нужно войти: /

Другие вопросы по тегам