【问题标题】:How to input a number on an Internet Explorer element?如何在 Internet Explorer 元素上输入数字?
【发布时间】:2020-11-30 16:06:52
【问题描述】:

我正在尝试在 Excel VBA 的 IE 元素(输入)上输入一个数字。

我不是 HTML 开发人员,但有一些框架代码可能会影响我的问题。

这就是我在 VBA 中所拥有的:

IE.Navigate "http://thisandthat/herewego.asp"
           
IE.Document.getElementsbyId("txt_cod_re_rh").Value = "aaaa"

什么都没有发生。

我也尝试获取元素 ID 或测试 VBA 是否可以看到它,但看起来 VBA 在页面上找不到它(尝试了 ID 和类):

Set element = Document.getElementByclass("select_st")

ThisWorkbook.Sheets(1).Range("b1").Value = element

这是我的 HTML:

<SCRIPT LANGUAGE="VBS">
smthing
</SCRIPT>
<HTML>
    <HEAD>
        
        
    <link href="../css/standard.css" rel="stylesheet" type="text/css">
    <script language="JavaScript" src="include/scripts.js"></script>
    <script language="JavaScript">
        function exibeRelatorierer(server) {

            d = window.document.frmFilter;

            var cod_VP = d.cbo_VP;
            var cod_periodo = d.cbo_Periodoerer;
            var cod_re_rh = d.txt_cod_re_rh;

            if (cod_re_rh.value == '') {
                cod_re_rh.value = "0";
            }

            if (cod_periodo.value == -1) {
                alert("Select smthing.");
            }else{
                if (d.TC[0].checked) {
                    parent.frames['frmMain'].location = servidor234234 + "RPT_CPR01884_TS" + "&rc:Area=Toolbar&rc:LinkTarget=frmMain&rc:JavaScript=True&rs:ClearSession=true&rc:Parameters=false" + "&COD_VP=" + cod_VP.value + "&COD_PERIODO=" + cod_periodo.value + "&COD_RE_RH=" + cod_re_rh.value
                } else {
                    parent.frames['frmMain'].location = servidor234234 + "RPT_CPR01884_CP" + "&rc:Area=Toolbar&rc:LinkTarget=frmMain&rc:JavaScript=True&rs:ClearSession=true&rc:Parameters=false" + "&COD_VP=" + cod_VP.value + "&COD_PERIODO=" + cod_periodo.value + "&COD_RE_RH=" + cod_re_rh.value
                }

我相信上面的这段代码让我在尝试向 txt_cod_re_rh 插入值时搞砸了。
我读了一些关于框架的东西?这个元素在另一个框架上吗? (不知道,真的。)

这是输入框所在的代码:

<form id="Form1" name="frmFiltro">
            <table border="0" width="100%" cellpadding="0" cellspacing="0">
                <tr class="table_bhoras1" height="50" align="center">
                     <td>Extração</td>
                 </tr>
            </table>
            <table id="Table3" cellSpacing="0" cellPadding="0" width="100%" border="0" class="titsemlink2">
                    <TR class="titsemlink2">
                        <td>
                            Inform number: 
                        </td>
                        <td>
                            <input class="select_st" type="text" name="txt_cod_re_rh" id="txt_cod_re_rh" value="" />
                        </td>
                    </TR>

【问题讨论】:

  • IE.Document.getElementsbyId("txt_cod_re_rh").Value = "aaaa" 不起作用。首先,您需要获取输入所在的帧。阅读VBA IE Automation - Read iFrame

标签: vba excel


【解决方案1】:

您的代码中有拼写错误。 .getElementsbyIdgetElementByclass 方法在 VBA 中的 InternetExplorer 文档对象中不存在。

你可以通过元素id试试这个:

Set element = IE.Document.getElementById("txt_cod_re_rh")
element.value = "aaaa"

或通过classname

Set element = IE.Document.getElementsByClassName("select_st")(0)
element.value = "aaaa"

如果没有完整的 html,很难判断它是否在 iframe 内。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    相关资源
    最近更新 更多