通过EXCEL VBA填写Web表单-找不到ID或任何要填写的表单

时间:2019-05-26 11:52:33

标签: html excel vba internet-explorer web-scraping

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

<div class="GHNF1GMDGI"

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

adress date 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

请帮助我解决这个问题。

1 个答案:

答案 0 :(得分:0)

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

Set refname = doc.getElementsByName("GHNF1GMDGM")

是一个集合,而不是单个元素,因此您不能这样做:

refname.Value = "923456"

您需要使用索引,例如

refname(0).Value = "923456"

除此之外,如果没有url或html,就不能说太多其他可能出错的内容。


旁注:

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

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