2015-01-08 96 views
0

我試圖讓我的一些代碼改變內部網頁上的單選按鈕,但是,頁面寫入的方式是我想要的元素沒有特定的ID。這裏是一個代碼示例:在IE中沒有名稱或ID標記的VBA IE控件單選按鈕

<div align="center" id="divControls"> 
    <form id="frmSearch" name="frmSearch" method="POST"> 
     <table cellpadding="0" cellspacing="0" class="exec_tbl align_vc"> 
     <tr> 
      <td class="exec_ltxt"><input type="radio" name="search" value=1 checked=checked onclick="collapse('submit');searchOptions();" /> Agent Search</td> 
      <td class="exec_ltxt"><input type="radio" name="search" value=2 onclick="expand('submit');searchOptions();" /> Team Search</td> 
      <td class="exec_ltxt"><input type="radio" name="search" value=3 onclick="expand('submit');searchOptions();" /> Manager Search</td> 
      <td class="exec_ltxt"><input type="radio" name="search" id='searchlob' value=4 onclick="expand('submit');searchOptions();" /> LoB Search</td> 
     </tr> 
     </table> 
    </form> 
    </div> 

我只是需要有單選按鈕單擊值= 2(團隊搜索)。

我試圖使用VBA是:

Sub Attendance_RoundedRectangle2_Click() 
    sCSVLink = "webpage" 
    sfile = "csvexport.php" 
    ssheet = "Sheet10" 

    Dim appIE As InternetExplorerMedium 
    Dim Obj As Object 

On Error Resume Next 

    Application.ScreenUpdating = False 
    Set appIE = New InternetExplorerMedium 
    Set ieRadio = IE.document.all 

    sURL = "webpage" 

    ' Instructes the macro to open IE and navigate to sURL. 
    With appIE 
     .Navigate sURL 
     .Visible = True 

     Application.Wait Now + TimeValue("00:00:02") 
     Set HTMLDOC = .document 
    End With 

    Application.Wait Now + TimeValue("00:00:02") 
    appIE.document.all.Item("divControls")(3).Checked = True 
    appIE.document.getElementByid("divControls").Value = "2" 

End Sub 

絕不是我親,我試圖拼湊它一起,非常感謝所有幫助我能!

更新的HTML

<div align="right"><a href="index.php?logout=1">logout</a></div><h1 class="font_2 & uline & center" style="color:#909090;">Reporting</h1> 
    <div align="center" id="divControls"> 
    <form id="frmSearch" name="frmSearch" method="POST"> 
     <table cellpadding="0" cellspacing="0" class="exec_tbl align_vc"> 
     <tr> 
      <td class="exec_ltxt"><input type="radio" name="search" value=1 checked=checked onclick="collapse('submit');searchOptions();" /> Agent Search</td> 
      <td class="exec_ltxt"><input type="radio" name="search" value=2 onclick="expand('submit');searchOptions();" /> Team Search</td> 
      <td class="exec_ltxt"><input type="radio" name="search" value=3 onclick="expand('submit');searchOptions();" /> Manager Search</td> 
      <td class="exec_ltxt"><input type="radio" name="search" id='searchlob' value=4 onclick="expand('submit');searchOptions();" /> LoB Search</td> 
     </tr> 
     <tr> 
      <td class="exec_ltxt" colspan="3"><div id="divSearchOption" align="center" style="display:inline;width:100%;"></div></td> 
      <td class="exec_ctxt"><input id="submit" type="button" value="Submit" style="display:none;" onclick="submitButton();"></td> 
     </tr> 
     <tr> 
<td class="exec_rtxt">Start Date:</td> 
<td class="exec_ltxt"> 
<input id="sDate" name="sDate" type="text" size="9" value="2014-01-08" onchange="if (document.getElementById('searchlob').checked != true) { searchOptions(); }" onblur="if (document.getElementById('searchlob').checked != true) { searchOptions(); }" /> 
<img src="icon_pickdate.gif" id="start_date_button" alt="date picker" /> 
</td> 
<td class="exec_rtxt">End Date:</td> 
<td class="exec_ltxt"> 
<input id="eDate" name="eDate" type="text" size="9" value="2015-01-08" onchange="if (document.getElementById('searchlob').checked != true) { searchOptions(); }" onblur="if (document.getElementById('searchlob').checked != true) { searchOptions(); }" /> 
<img src="icon_pickdate.gif" id="end_date_button" alt="date picker" /> 
</td> 
     </tr> 
     </table> 
     <input id="uid" name="uid" type="hidden" value="agent" /> 
    </form> 
    </div> 
    <div id="divTeamTable" align="center"></div> 
    <br/> 
    <div align="center" id="divAgentData"></div> 

我離開的唯一信息是,其中包括不應該影響VBA幾個JavaScript鏈接的標題。

+0

你可以使用'的getElementsByTagName(「輸入」)'然後遍歷,直到找到一個與的innerText =「團隊搜索」 –

回答

0

你並不需要暫停與Application.Wait運行宏,你讓事件也先宏導航到URL和發生嘗試直通的DOM

工作

在您與之前。 ..End帶座的。可見=真行之前補充一點:

Do 
     DoEvents 
    Loop Until .ReadyState = 4 

    .Document.getElementsByTagName("input")(1).Checked = True 

刪除這幾行代碼,因爲它們不再起任何作用:

Set ieRadio = IE.document.all 
Set HTMLDOC = .document 
Application.Wait Now + TimeValue("00:00:02") 
appIE.document.all.Item("divControls")(3).Checked = True 
appIE.document.getElementByid("divControls").Value = "2" 
+0

我更新使用新的生產線我的代碼,並去除未必要的代碼,但它不會更新。我可能沒有在原始文章中包含關鍵的html元素。我正在更新原始html以包含我認爲丟失的內容。 – user1664305

+0

我修改了代碼,請嘗試。該代碼基於假設標記將來不會改變 –

0

我認爲日可能有所幫助,效率不高,但有效。

set inputObjs=appIE.document.getElementByTag("input") 
for each obj in inputObjs 
    if(obj.value=2) then obj.click 
next