Веб-запрос VBA с логином + паролем

Доброе утро, ребята,

Используя уже отвеченные вопросы здесь, я все еще не могу заставить работать какой-либо код для моего конкретного сайта, к сожалению, так как это внутренний сайт, я не могу предоставить доступ к фактическому сайту.

Сайт представляет собой страницу входа в систему.jsp. Может ли это быть причиной проблемы? Макрос открывает страницу входа в IE, но не вводит никаких пользовательских данных в поля и не отправляет в настоящее время.

Я также получаю сообщение об ошибке "вызванный объект отключился от своих клиентов" после запуска макроса.

Microsoft Internet Controls активен и Forms 2.0 активен в ссылках также

Я довольно новичок в VBA, если я что-то упустил, пожалуйста, дайте мне знать, я также снизил настройки безопасности в IE.

РЕДАКТИРОВАТЬ Я несколько уверен, что это связано с моими идентификаторами формы, но я не могу видеть, где я ошибся?

Sub GetTable()


    Dim ieApp As InternetExplorer
    Dim ieDoc As Object
    Dim ieTable As Object
    Dim clip As DataObject


    'create a new instance of ie
    Set ieApp = New InternetExplorer


    'you don’t need this, but it’s good for debugging
    ieApp.Visible = True


    'assume we’re not logged in and just go directly to the login page
    ieApp.Navigate "http://dss-gp-mida-002/MidasDS/login.jsp
    Do While ieApp.Busy: DoEvents: Loop
    Do Until ieApp.ReadyState = READYSTATE_COMPLETE: DoEvents: Loop


    Set ieDoc = ieApp.Document


    'fill in the login form – View Source from your browser to get the control names
    With ieDoc.forms(0)
    .Username.Value = "Carterr"
    .Password.Value = "password"
    .submit
    End With
    Do While ieApp.Busy: DoEvents: Loop
    Do Until ieApp.ReadyState = READYSTATE_COMPLETE: DoEvents: Loop


    'now that we’re in, go to the page we want
    ieApp.Navigate "http://dss-gp-mida-002/MidasDS/homepage.jsp"
    Do While ieApp.Busy: DoEvents: Loop
    Do Until ieApp.ReadyState = READYSTATE_COMPLETE: DoEvents: Loop


    'get the table based on the table’s id
    Set ieDoc = ieApp.Document
    Set ieTable = ieDoc.all.Item("sampletable")


    'copy the tables html to the clipboard and paste to teh sheet
    If Not ieTable Is Nothing Then
    Set clip = New DataObject
    clip.SetText "" & ieTable.outerHTML & ""
    clip.PutInClipboard
    Sheet1.Select
    Sheet1.Range("A1").Select
    Sheet1.PasteSpecial "Unicode Text"
    End If


    'close 'er up
    ieApp.Quit
    Set ieApp = Nothing


    End Sub

Исходный текст страницы:

<input type="hidden" name="urlwanted" value=""><input type="hidden" name="sourcePageURL" value=""><input type="hidden" name="ssoiid" value="">
<div>
<div class="form-group">
<label for="username">Username</label><input name="username" id="username" type="text" class="form-control" placeholder="Enter Username">
</div>
<div class="form-group">
<label for="password">Password</label><input name="password" id="password" type="password" class="form-control" placeholder="Enter Password">
</div>
<script>
                    $("#username").keyup(function(event) {
                        if (event.which == 13) {
                              $("#loginform").submit();
                         }
                    });
                    $("#password").keyup(function(event) {
                        if (event.which == 13) {
                              $("#loginform").submit();
                         }
                    });
                </script>
<div class="form-group">
<div class="btn-group-vertical-justified">
<button name="login" type="button" value="Log In" class="btn btn-primary" onclick="document.loginform.ssoiid.value=&quot;&quot;;document.loginform.submit()">Log In</button>
</div>

1 ответ

Я использовал следующее в чем-то похожем:

Set ie = GetIE("www.url.com")
 If Not ie is Nothing Then

  ie.navigate (strtarget) 'strtarget is the target url
  Do Until ie.ReadyState = 4: DoEvents: Loop
    If ie.LocationURL = "www.url.com/loginpage" Then
     MsgBox "Login Please!!"
    Else 
     pageText = ie.document.body.innertext
    End if
  Else
   MsgBox "IE not found!!"
  End if

Он отобразит окно сообщения, в котором вас попросят войти, если вы попадете на страницу входа. Затем вы входите вручную и снова запускаете скрипт.

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