ARi*_*ich 5 html excel internet-explorer vba radio-button
编辑:几个月后,我再次尝试使用我第一次尝试的相同语法(在下面发布).出于某种原因,它奏效了!也许除了我的语法之外的其他东西导致无效...结束编辑
我一直在搜索论坛几个小时,现在试图找到解决这个问题的方法,但我没有尝试过任何工作.
我正在使用VBA自动化在SurveyMonkey上创建调查的过程.到目前为止,我已经能够:
问题不在于我无法选择单选按钮; 我的代码选择前三个按钮就好了.令我困惑的是,第四个按钮不会改变!我对每个按钮使用相同的过程,所以我无法弄清楚为什么最后一个按钮不会选择.
这是我的代码部分:
objIE.Document.getElementById("rdlResponseType_1").Click 'Allow multiple responses = Yes
objIE.Document.getElementById("rdlResponseEdit_1").Click 'Allow Responses to be Edited = Yes
objIE.Document.getElementById("rdlThankyou_1").Click 'Display a "Thank You" page? = Yes
objIE.Document.getElementById("rdlCompleteOpt_1").Click 'Survey Completion = Close Window
Run Code Online (Sandbox Code Playgroud)
这是单选按钮的HTML:
<table border="0" cellpadding="0" cellspacing="0" style="width: 100%;">
<tr id="CompleteOptDesc">
<td style=""> </td>
<td>After the respondent leaves the survey:</td>
</tr>
<tr id="CompleteOptItems">
<td style=""> </td>
<td align="left" nowrap="nowrap" valign="top">
<table id="rdlCompleteOpt" class="Clean radioList" OnClick="radioToggle('rdlCompleteOpt', '0', 'panLink');" name="rdlCompleteOpt" border="0" style="white-space: nowrap">
<tr>
<td><span style="white-space: nowrap"><input id="rdlCompleteOpt_0" type="radio" name="rdlCompleteOpt" value="0" checked="checked" /><label for="rdlCompleteOpt_0"><b>Redirect</b> to your own webpage.</label></span></td>
</tr><tr>
<td><input id="rdlCompleteOpt_1" type="radio" name="rdlCompleteOpt" value="2" /><label for="rdlCompleteOpt_1"><b>Close Window</b></label></td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
这是收音机切换部分的代码:
<td width="65%" valign="top">
<div id="panLink" style="DISPLAY:inline">
<div class="URLinfo">
<b>Enter a URL</b> to jump to upon leaving the survey:<br />
<div title="REQUIRED: Enter URL (255 character max)" style="padding:4px 0 2px 0;">
<input name="txtWebLink" type="text" value="http://www.surveymonkey.com/" maxlength="255" size="40" id="txtWebLink" class="RQR opaque" />
</div>
<span class="tip">Example: <u>http://www.mysite.com/home.html</u></span>
</div>
</div>
</td>
Run Code Online (Sandbox Code Playgroud)
任何建议将非常感谢!
小智 2
有几件事需要考虑:
你什么时候调用这个代码?OnNavigate 还是 DocumentComplete?该对象可能还不存在。您可以通过使用断点并添加表达式监视来检查它是否有效
objIE.Document.getElementById("rdlCompleteOpt_1")
Run Code Online (Sandbox Code Playgroud)
使用 OnDocumentComplete 确保 HTML 组件存在
您调用点击函数的方式可能会导致问题。尝试这个
Call objIE.Document.getElementById("rdlCompleteOpt_1").Click()
Run Code Online (Sandbox Code Playgroud)
我怀疑它可能会产生很大的影响,但我喜欢验证一切。
通过删除“层”来隔离问题的原因。您可以使用从 IE 开发工具 (F12) JavaScript 控制台调用的纯 JavaScript 来完成此操作吗?
如果不是,则问题出在您与页面元素交互的方式上。如果是,那么我们需要弄清楚是什么导致了 VBA 完整性问题。再次参见#2,因为它可能是问题的原因。
另外,如果更改元素的 HTML 顺序,是否会出现此问题?如果你这样称呼怎么办?
objIE.Document.getElementById("rdlCompleteOpt_1").Click 'Survey Completion = Close Window
objIE.Document.getElementById("rdlResponseType_1").Click 'Allow multiple responses = Yes
objIE.Document.getElementById("rdlResponseEdit_1").Click 'Allow Responses to be Edited = Yes
objIE.Document.getElementById("rdlThankyou_1").Click 'Display a "Thank You" page? = Yes
Run Code Online (Sandbox Code Playgroud)
那么它是否有效,或者“最后”一项是否失败?
不太可能是原因,但 HTML 提供缺少关闭单元格、行和表格的代码。
</tr>
</table>
<!-- missing -->
</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)虽然不是您问题的具体答案,但我相信这可能符合您帖子的意图。由于您想要管理 SurveyMonkey 收集器,请查看此处的 SurveyMonkey API,因为使用 API 会给您带来很多好处。
| 归档时间: |
|
| 查看次数: |
6318 次 |
| 最近记录: |