2015-07-06 2 views
0

Я просмотрел несколько форумов, но, к сожалению, мои навыки html - это не то, что они должны быть. Может ли кто-нибудь помочь мне найти правильную команду для входа на www.emo.no с помощью Excel VBA? (См. Код внизу).Войти на веб-страницу javascript с помощью Excel vba

Я успешно удалось заполнить SearchBar Google с этим кодом:

Sub Google_Test() 

Set ie = CreateObject("InternetExplorer.application") 

Bnavn = "UserNa" 

With ie 
    .Visible = True 
    .navigate "www.google.com" 

Do While .Busy Or _ 
    .readyState <> 4 
    DoEvents 
Loop 

ie.document.all("q").Value = Bnavn 


Do While .Busy Or _ 
    .readyState <> 4 
    DoEvents 
Loop 


End With 
Set ie = Nothing 

End Sub 

Я пытаюсь иметь журнал Excel VBA в сайт www.emo.no для меня, но я не смог найти правильные поля для заполнения

код на веб-странице я пытаюсь иметь Excel журнал VBA на это:.

<div id="PcLogin"> 

     <script language="Javascript"> 
     var locked = false; 

     function doLogin() { 
     document.login.uid.value = document.login.uid.value.toLowerCase(); 
     document.login.pwd.value = document.login.pwd.value.toLowerCase(); 
     return true; 
     } 


if(!document.all){ 
    document.captureEvents(Event.CLICK | Event.FOCUS); 

} 

/* Code for putting the visible word "Username" in the userID field */ 

function changeBoxUid() 
{ 
    document.getElementById('uid1').style.display='none'; 
    document.getElementById('uid2').style.display=''; 
    document.getElementById('uid').focus(); 
} 

function restoreBoxUid() 
{ 
    if(document.getElementById('uid').value=='') 
    { 
     document.getElementById('uid1').style.display=''; 
     document.getElementById('uid2').style.display='none'; 
    } 
} 
/* End code for userID field */ 


/* Code for putting the visible word "Password" in the password field */ 

function changeBoxPwd() 
{ 
    document.getElementById('div1').style.display='none'; 
    document.getElementById('div2').style.display=''; 
    document.getElementById('pwd').focus(); 
} 
function restoreBoxPwd() 
{ 
    if(document.getElementById('pwd').value=='') 
    { 
     document.getElementById('div1').style.display=''; 
     document.getElementById('div2').style.display='none'; 

    } 
} 
/* End code for password field */ 

</script><div id="loginBody"> 
<form target="_top" method="post" id="login" name="login" action="ePortal/ctrl" onsubmit=" 
       if (locked) { 
        return false; 
       } 
       else 
       { 
        locked=true; 
        doLogin(); 
       };   
      "> 
<div class="PcLoginPositionInput"> 
<input value="user" name="action" type="hidden"><input value="login" name="spec" type="hidden"> 
<div id="uid1"> 
<input onfocus="changeBoxUid()" name="uid_temp" type="text" class="PcLoginInputFields" value="Brukernavn"> 
</div> 
<div id="uid2" style="display: none;"> 
<input onblur="restoreBoxUid()" value="" id="uid" name="uid" type="text" class="PcLoginInputFields"> 
</div> 
<div id="div1"> 
<input onfocus="changeBoxPwd()" type="text" name="pass_temp" class="PcLoginInputFields" value="Passord"> 
</div> 
<div style="display:none" id="div2"> 
<input onblur="restoreBoxPwd()" value="" type="password" id="pwd" name="pwd" class="PcLoginInputFields"> 
</div> 
</div> 
<div class="PcLoginForgottenPwd"> 
<a class="login" href="ePortal/ctrl?action=requestnewpassword">Glemt passord?</a> 
</div> 
<div id="PcLoginRegister"></div> 
<input value="" type="submit" class="login_rollover"> 
</form> 
</div> 


    </div> 

Я попытался «UID», «UID1», «UID2», " uid_temp "," div1 "," div2 "," pa ss_temp "и" pwd ", но на экране нет действий.

Вот код, я использую для сайта:

Sub EMO_login() 
' Source for this code: 
' http://stackoverflow.com/questions/24038230/fill-user-name-and-password-in-a-webpage-using-vba 
' http://stackoverflow.com/questions/25319983/logging-in-to-website-with-excel-vba 

Set ie = CreateObject("InternetExplorer.application") 

Bnavn = User1 
Pw = testPass1 

With ie 
    .Visible = True 
    .navigate "www.emo.no" 

Do While .Busy Or _ 
    .readyState <> 4 
    DoEvents 
Loop 


'This is where the input command should be. 


Do While .Busy Or _ 
    .readyState <> 4 
    DoEvents 
Loop 


End With 
Set ie = Nothing 

End Sub 

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

+0

Я предлагаю смотреть на '' getElementById' и getElementsByTagName'. Вы можете использовать 'ie.document.getElementById (« uid2 »). GetElementsByTagName (« input ») (0) .Value = ...' – nhee

+0

Я до сих пор не могу заполнить форму. – Hermann

+0

Какую ошибку вы получаете и на какой линии? – nhee

ответ

0

Thans to @nhee за то, что помог мне найти решение.

Рабочий код выглядит следующим образом:

Sub EMO_login() 

Dim ie As Object 
Dim sht As Worksheet 

Set sht = Sheet8 
Set ie = CreateObject("InternetExplorer.application") 

With ie 
    .Visible = True 
    .navigate "www.emo.no" 

Do While .Busy Or _ 
    .readyState <> 4 
    DoEvents 
Loop 

'Login procedure 
ie.document.getElementById("uid2").getElementsByTagName("input")(0).Value = "MyUsername" 
ie.document.getElementById("div2").getElementsByTagName("input")(0).Value = "MyPassword" 
ie.document.forms("login").submit 

Do While .Busy Or _ 
    .readyState <> 4 
    DoEvents 
Loop 

End With 
Set ie = Nothing 

End Sub 
Смежные вопросы