excel - 使用 vba 在网站上的打开框中选择单选按钮/输入值

标签 excel vba

我正在尝试解决单选按钮问题,并且还想在打开的文本框中输入值(使用 VBA)。下面是我正在使用的脚本。

我尝试了多种方法,也查看了其他网站,但它不起作用。

如果有人可以指导我,那就太好了。

Dim IE As Object
Dim Region, VOCSentDate As String

Sheets("Sheet1").Select
Region = ThisWorkbook.Worksheets("Sheet1").Range("A1").Value
VOCSentDate = ThisWorkbook.Worksheets("Sheet1").Range("B1").Value

Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.Navigate "website link....."
Application.StatusBar = "Submitting"
While IE.Busy
DoEvents
Wend

我不知道如何打单选按钮问题。我尝试了下面打开文本框的 3 种类型,但它们都不起作用,抛出对象需要错误
IE.Document.getElementById("ctl00_body_7F22FA6E-5D77-426A-AA84-68D833FA05C1_3").Value = VOCSentDate

IE.Document.getElementById("ctl00_body_7F22FA6E-5D77-426A-AA84-68D833FA05C1_3").innerText = VOCSentDate

IE.Document.all("ctl00_body_7F22FA6E-5D77-426A-AA84-68D833FA05C1_3").Value = VOCSentDate

Application.StatusBar = "Form Submitted"
IE.Quit
Set IE = Nothing

-------------- 单选按钮的 HTML --------------
<div class="SurveyItem  RadioButtonList Item1">
  <div class="ItemText">
    <span class="NoItemNumber"></span><span class="QuestionText">Please select your region:</span>
  </div>
  <div class="Validators">
    <span id="ctl00_body_ctl12" style="color:Red;display:none;">A response to this question is required</span>
  </div>
  <div id="ctl00_body_01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1" class="Response">
    <div class="ResponseOption">
      <input id="ctl00_body_01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1_1" type="radio" name="ctl00$body$ctl00_body_ctl00_01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1" value="01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1_1" /><label for="ctl00_body_01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1_1">Americas</label>
    </div>
    <div class="ResponseOption AlternatingRow">
      <input id="ctl00_body_01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1_2" type="radio" name="ctl00$body$ctl00_body_ctl00_01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1" value="01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1_2" /><label for="ctl00_body_01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1_2">ANZ</label>
    </div>
    <div class="ResponseOption">
      <input id="ctl00_body_01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1_3" type="radio" name="ctl00$body$ctl00_body_ctl00_01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1" value="01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1_3" /><label for="ctl00_body_01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1_3">APAC</label>
    </div>
    <div class="ResponseOption AlternatingRow">
      <input id="ctl00_body_01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1_4" type="radio" name="ctl00$body$ctl00_body_ctl00_01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1" value="01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1_4" /><label for="ctl00_body_01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1_4">APME</label>
    </div>
    <div class="ResponseOption">
      <input id="ctl00_body_01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1_5" type="radio" name="ctl00$body$ctl00_body_ctl00_01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1" value="01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1_5" /><label for="ctl00_body_01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1_5">Europe</label>
    </div>
    <div class="ResponseOption AlternatingRow">
      <input id="ctl00_body_01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1_6" type="radio" name="ctl00$body$ctl00_body_ctl00_01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1" value="01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1_6" /><label for="ctl00_body_01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1_6">India</label>
    </div>
    <div class="ResponseOption">
      <input id="ctl00_body_01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1_7" type="radio" name="ctl00$body$ctl00_body_ctl00_01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1" value="01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1_7" /><label for="ctl00_body_01EE9560-B1F9-4BA3-A922-9D53A1120FC2_1_7">North America</label>
    </div>

-------------------- 开放式的 HTML ----------------------------
<div class="SurveyItem  Item3">
  <div class="ItemText">
    <span class="NoItemNumber"></span><span class="QuestionText">EOPR First Sent Date (dd/mm/yyyy)</span>
  </div>
  <div class="Validators">
    <span id="ctl00_body_ctl52" style="color:Red;display:none;">A response to this question is required</span><span id="ctl00_body_ctl53" style="color:Red;display:none;">Incorrect Date Format</span>
  </div>
  <div class="Response">
    <input name="ctl00$body$01EE9560-B1F9-4BA3-A922-9D53A1120FC2_3" type="text" id="ctl00_body_01EE9560-B1F9-4BA3-A922-9D53A1120FC2_3" class="TextBox" />
  </div>
</div>

最佳答案

tl;博士;

以下内容基于所示的 HTML。如果有父 form/frame/iframe所涉及的标签也需要在进行以下选择之前进行协商。

单选按钮:

对于单选按钮,您可以使用 CSS 选择器组合来定位页面样式并返回所有单选按钮元素的 nodeList。然后您可以通过索引选择适当的按钮

Dim aNodeList As Object
Set aNodeList = ie.document.querySelectorAll(".ResponseOption [type=radio]")
aNodeList.item(0).Click '<==Select first  option

我认为 click 可能是这里可能的方法,因为我看不到选中的属性,否则语法将是 aNodeList.item(0).checked = True
返回的nodeList按索引如下



文本框:

输入框有一个 ID,因此您可以使用 ID 选择器 # 来定位
ie.document.querySelector("#ctl00_body_01EE9560-B1F9-4BA3-A922-9D53A1120FC2_3").Value = "myText"

关于excel - 使用 vba 在网站上的打开框中选择单选按钮/输入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52287990/

相关文章:

excel - flink InputStream 类 org.apache.commons.compress.archivers.zip.ZipFile$1 没有实现 InputStreamStatistics

excel - 为什么分组 ActiveX 复选框会改变 OLEObject 可见性

excel - 如何在 Excel 中查找拼写错误的文本之间的匹配项?

excel - 自动化错误 -2147221080 (800401a8)

excel - 使用 VBA 格式化从 Access 输出的 Excel 文件?

excel - WorksheetFunction.Filter 中的数据类型错误

vba - Excel VBA - 变体上的类型不匹配错误(13)但仅在特定情况下

vba - 在 VBA 完成执行之前,Power Query 表不会下载数据

excel - VBA 宏搜索自动筛选

vba - 用 VBA 打印 PDF 文件