Страницы: 1
RSS
VBA. Решить проблему авторизации на сайте.
 

Очень дано, написал макрос, который с внутреннего корпоративного сайта "забирает" справочник сотрудников компании.
В текущем месяце макрос перестал работать, по моему мнению,  из-за обновления Internet Explorer или завершением его поддержки.
(Теперь после запуска макроса открывается страница IE и макрос завершает работу с ошибкой)
"Рабочий пример" предоставить не могу, т.к. эта информация ДСП, да и доступа к ресурсам компании из "вне" нет.
Ниже часть кода,
Подскажите, пож-та, возможные варианты решения проблемы....

Код
Dim oIE As InternetExplorerMedium, sHtml As String
Dim tmp, i As Long
Dim sAnswer As String, IE As Object, avArr, li As Long
Set oIE = CreateObject("InternetExplorer.Application") 'запускаем explorer
Set oIE = New InternetExplorerMedium
oIE.Visible = 0 'видимость explorer - 0-скрыть 1-показать
s = "****************" 'ссылка
oIE.Navigate (s) 'загружаем сайт
While oIE.Busy Or oIE.ReadyState <> READYSTATE_COMPLETE: DoEvents: Wend
Set NodeList = oIE.Document.getElementsByTagName("Input") ' выбираем все поля ввода
Set maPageHtml = oIE.Document: DoEvents: DoEvents
If oIE.LocationURL = s Then
maPageHtml.getElementsByName("USER_LOGIN").Item(0).Value = "********"
maPageHtml.getElementsByName("USER_PASSWORD").Item(0).Value = "*******"
NodeList(6).Click
End If
While oIE.Busy Or (oIE.ReadyState <> 4): DoEvents: Wend

    sAnswer = oIE.Document.body.innerHTML
    avArr = Split(sAnswer, Chr(10))
    schet = 0
Изменено: Neostt - 29.06.2022 10:41:16
 
Теперь только через  Selenium VBA?
или есть другие способы?
 
Макрос может работать с сайтом без использования браузера
(но код надо полностью переписывать)
Но с кодом мы вам тут не поможем, ибо нет доступа к сайту
Пример кода есть здесь:
https://excelvba.ru/code/YandexMarketAuthentication
 
Я понимаю. что готовое решение (в силу отсутствия доступа к сайту) мне не дадут. Но может подскажут ошибку...
Код
Sub load_Auth()
 
    loginURL$ = "...."
    csvURL$ = "......."
    
 

     Dim XMLHTTP As Object
     Set XMLHTTP = CreateObject("MSXML2.ServerXMLHTTP.6.0")
 
 
        XMLHTTP.Open "POST", loginURL$, False
        XMLHTTP.setRequestHeader "Content-Type", "text/xml"
        XMLHTTP.setRequestHeader "Cache-Control", "no-cache"
        XMLHTTP.setRequestHeader "Pragma", "no-cache"
        XMLHTTP.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:25.0) Gecko/20100101 Firefox/25.0"
        Dim POST() As Byte, PostData$
    
    PostData = "USER_LOGIN=фффффф&USER_PASSWORD=ььььььь"
    POST = StrConv(PostData, vbFromUnicode)
    XMLHTTP.Send (POST): DoEvents
    
    
    XMLHTTP.Open "GET", csvURL$, False
    XMLHTTP.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
    XMLHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    XMLHTTP.setRequestHeader "Referer", csvURL$
 
    XMLHTTP.Send: DoEvents
 
Debug.Print XMLHTTP.ResponseText
 
End Sub
Накидал код, к сожалению не работает.
Не уверен в корректности строки
Код
  PostData = "USER_LOGIN=фффффф&USER_PASSWORD=ььььььь"

Приложил кусок кода html (см. вложение), может подскажите в чем ошибка....
Страницы: 1
Наверх