2016-11-16 61 views
0

嗨,我是VBA的新手,我嘗試使用VBA自動登錄到網頁,並且我成功了幾個網站,但對於這個特定的網頁我很無法做到這一點VBA - 如何輸入用戶名,密碼,然後點擊網頁上的提交按鈕

下面是我的VBA代碼:

Sub login() 
    Set IE = CreateObject("InternetExplorer.application") 
    IE.AddressBar = 0 
    IE.StatusBar = 0 
    IE.Toolbar = 0 
    IE.Visible = True 
    IE.navigate "www.sample.com" 
    Do Until Not IE.busy: DoEvents: Loop 
    Set doc = IE.document 
    Do While doc.ReadyState <> "complete": DoEvents: Loop 
    IE.document.all("ocsid").Value = "xx" 
    IE.document.all("password").Value = "yy" 
    IE.document.all("Submit").Click 
End Sub 

下面是我從網頁

</TR> 
    <TR> 
    <TD width="165"><FONT FACE="Arial, Helvetica" SIZE=2><b>OCS Id:</b></FONT></TD> 
    <TD align="center" width="95"><INPUT size="15" type="text" maxlength="10" name="ocsid"></TD> 
    </TR> 
    <TR> 
    <TD width="165"><FONT FACE="Arial, Helvetica" SIZE=2><b>OCS Password</b></FONT>:</TD> 
    <TD align="center" width="95"><INPUT size="15" type="password" maxlength="8" name="password"></TD> 
    </TR> 
    <TR> 
    <TD width="165"><FONT FACE="Arial, Helvetica" SIZE=2><b>X500 Id:</b></FONT></TD> 
    <TD align="center" width="95"><INPUT size="15" type="text" maxlength="10" name="x500id"></TD> 
    </TR> 

    <TR> 
    <TD height="15" width="165"></TD> 
    <TD width="95"></TD> 
    </TR> 
    <TR> 
    <TD align="center" width="165" colspan="2"><INPUT type="checkbox" name="changePasswordBox" onclick="changePassword2();" /> 
    <FONT FACE="Arial, Helvetica" SIZE=2><b>Change Password</b></FONT></TD> 
    </TR>      
    </TABLE> 
    <div id="HideArea" > 
    <TABLE width="287"> 
    <TR> 
    <TD width="165"><FONT FACE="Arial, Helvetica" SIZE=2><b>New Password:</b></FONT></TD> 
    <TD align="center" width="95"><INPUT size="15" type="password" maxlength="8" name="newpassword"></TD> 
    </TR> 

<TR> 
<TD width="165"><FONT FACE="Arial, Helvetica" SIZE=2><b>Verify New Password:</b></FONT></TD> 
<TD align="center" width="95"><INPUT size="15" type="password" maxlength="8" name="VERIFY_NEW_PWD" ></TD> 
</TR> 
<TR> 
</TABLE> 
</div>  
<TABLE width="287"> 
<TR> 
<TD height="15" width="165"></TD> 
<TD width="95"></TD> 
</TR> 
<TR> 
<TD colspan="2" align="center"><input type="submit" name="Submit" value="Submit" onclick="if (top.frames[0] && top.frames[0].animate) top.frames[0].animate.start();" style="width: 60px">&nbsp;&nbsp;&nbsp; 
<INPUT style="width: 60px" type="button" name="Reset" value="Reset" onClick="resetPage();"></TD> 
</TR> 

我希望這WIL複製的登錄區的HTML代碼我幫你回答我的問題!

評論: - 我很抱歉!我不明白你在問什麼?但我只是發現了一些東西,當我使用Chrome瀏覽器右鍵單擊頁面時,它會給出一個額外的選項作爲「查看幀源」,通常所有其他網站,我成功地自動化上述過程將只有一個選項爲「查看頁面源「使用我將找到」ID「和」標籤「等....當我點擊」查看頁面源「選項時,我沒有看到任何」ID「和」標籤「,而我只有鏈接以.jsp格式結尾,當我點擊鏈接時,它會將我帶到網頁的某個部分(如登錄區域)(法律聲明和隱私政策)....我不確定這是否會對您有所幫助!但我真的很抱歉,我非常感謝你的工作!

+0

功能的代碼產生一個錯誤?如果是這樣,在哪裏?什麼是實際的網站(我假設www.sample.com是不是)?鑑於它可以在一些網站上運行,但不能在一個特定的網站上運行,意味着該網站的設置可能會有所不同... – rohrl77

+0

是的,它確實給了我一個錯誤「運行時錯誤 - 424對象需要」,並且這一步發生在這一步IE.document.all(「ocsid」)。Value =「xx」)!!!我很抱歉該網站是保密的,我不會分享它的位置!是的,這個網站的設計是不同的,其他網站在標籤中會有「ID」或「Class」,但這不是!所以我卡住了! – David

+0

如果不能根據實際場地進行測試,任何建議都只能抓住吸管。 –

回答

0

不知道是否可以發佈這個答案,但如何使用getElementsByName按名稱選擇輸入字段?

Sub login() 
    Dim IE As Object 
    Dim doc As Object 
    Set IE = CreateObject("InternetExplorer.application") 
    IE.AddressBar = 0 
    IE.StatusBar = 0 
    IE.Toolbar = 0 
    IE.Visible = True 
    IE.navigate "www.sample.com" 
    Do Until Not IE.busy: DoEvents: Loop 
    Set doc = IE.document 
    Do While doc.ReadyState <> "complete": DoEvents: Loop 
    doc.GetElementsByName("ocsid")(0).Value = "xx" 
    doc.GetElementsByName("password")(0).Value = "xx" 
    doc.GetElementsByName("Submit")(0).Click 
End Sub 

測試這個HTML文件:

<input size="15" type="text" maxlength="10" name="ocsid"> 
<input size="15" type="password" maxlength="8" name="password"> 
<input type="submit" name="Submit" value="Submit" onclick="alert('it works')"> 
+0

感謝您的回覆!但是我在這段代碼中收到錯誤「IE.document.getElementsByName(」OCS Id「)(0).Value =」xx「」錯誤是「運行時錯誤 - 91」對象變量或塊變量未設置「我也明白,與實際的網址很難給出答案!!! – David

+0

你有沒有添加「微軟HTML對象庫」 - 引用到您的VBA項目? – Lukas

+0

其實我沒有!!但即使添加它和其他2個選項是「Microsoft Internet Controls」和「Microsoft Forms 2.0 Object Library」,然後保存並重新打開並嘗試使用代碼,但仍然收到此代碼的錯誤信息(IE.document.getElementsByName(「ocid」)) (0).Value =「xx」)爲「運行時錯誤 - 91」對象變量或塊變量未設置「!!! – David