首页 > 解决方案 > 通过 EXCEL VBA 填写 Web 表单 - 找不到 ID 或任何东西来填写表单

问题描述

<div class="GHNF1GMDEI GHNF1GMDGI"><div class="GHNF1GMDJK">Reference</div></div>

<div class="GHNF1GMDGI"

<div class="GHNF1GMDJK">Reference</div>

地址 日期html代码

<input type="text" class="GHNF1GMDGM" maxlength="64" style="width: 350px;">

我试图使用不同的类标签等来填写 Web 表单。但它无法填写表单并且发生错误,对象不支持此属性或方法。

我尝试了很多不同的方法:

  Sub automaticformfilling()

    Dim ie As InternetExplorer
    Dim doc As MSHTML.HTMLDocument
    Set ie = CreateObject("internetexplorer.application")

    With ie
        .Visible = True
        .navigate "xxxxxx"

        'Wait for loading
        Do While .Busy
            DoEvents
        Loop

        Do While .readyState <> 4
            DoEvents
        Loop   
    End With

    Set doc = ie.document        
    Set fname = doc.getElementById("j_username")
    fname.Value = "xxxx"

    Set lastName = doc.getElementById("j_password")
    lastName.Value = "xxxx"

    doc.getElementsByName("btn_submit")(0).Click
    'Set doc = ie.document
    'Set invdate = doc.getElementsByClassName("GHNF1GMDEI")
    'invdate.Value = "25"
    Set refname = doc.getElementsByName("GHNF1GMDGM")
    '.doc.getElementsByClassName ("GHNF1GMDGM")
    refname.Value = "923456"

End Sub

请帮我解决这个问题。

标签: htmlexcelvbainternet-explorerweb-scraping

解决方案


您当前的错误是由于以下事实:

Set refname = doc.getElementsByName("GHNF1GMDGM")

是一个集合,而不是单个元素,所以你不能这样做:

refname.Value = "923456"

您需要使用索引,例如

refname(0).Value = "923456"

除此之外,如果没有 url 或 html,就不能说其他任何可能出错的事情。


边注:

我会将用于页面加载的两个循环压缩为一个:

While .Busy Or .readyState < 4: DoEvents: Wend

推荐阅读