2017-09-26 64 views
0

我正在自动化一个工作流程,从而导航到特定网站(http://www.boxofficemojo.com/)并将值粘贴到网站的搜索栏中。我无法与VBA中的网站搜索栏进行交互。将值粘贴到网站搜索栏VBA

搜索栏有以下HTML代码:

<form name="searchbox" action="/search/q.php" method="POST"> 
    <input name="q" style="width: 90px; font-weight: bold;" type="text"><br> 
    <input type="submit" value="Search..."> 
</form> 

代码命令我现在似乎已经不奏效如下。我想将单元格c3的excel值粘贴到搜索栏中,然后提交。

objIE.Document.getElementByName("q").Value = Sheets("2016").Range("c3").Value 

任何想法?

回答

0

测试,这个工作对我来说:

Sub Test() 

    Dim IE As New InternetExplorer, Doc As HTMLDocument 
    Dim oSearch As HTMLDivElement 

    With IE 
     .Visible = True 
     .navigate "http://www.boxofficemojo.com/" 
     Do While .Busy Or .readyState <> 4: DoEvents: Loop 
     Set Doc = IE.Document 
    End With 

    Set oSearch = Doc.getElementsByClassName("nl_link")(3) 
    Set oSearch = oSearch.getElementsByTagName("input")(0) 
    oSearch.Value = "test" 

    Doc.forms(0).submit 

End Sub 
+0

谢谢!作为快速跟进,我将如何点击搜索按钮?搜索按钮的HTML代码是:* n1xn1x

+0

@ n1xn1x已更新的答案包括提交表单的方法。 –

+0

我与该代码唯一的问题是以下行:Set Doc = IE.Document 它给我一个“对象需要”的错误..任何想法? 我的整个代码是: 昏暗objIE作为新的InternetExplorer 昏暗的文件作为HTMLDocument的 昏暗oSearch作为HTMLDivElement 随着objIE 。可见=真 .Navigate “http://www.boxofficemojo.com/” 做虽然objIE.Busy =真或者objIE.ReadyState <> 4:的DoEvents:回路 设置文档= IE.Document 结束随着 集oSearch = Doc.getElementsByClassName( “nl_link”)(3) 等..... – n1xn1x

1

objIE.Document.getElementByName( “Q”)。值=表( “2016”),范围( “C”)。价值

我相信你想使用“getElementsByName() “它返回一组元素。假设第一个元素:

objIE.Document.getElementsByName("q")[0].Value = Sheets("2016").Range("c3").Value 
+0

谢谢!作为快速跟进,我将如何点击搜索按钮?搜索按钮的HTML代码是: <* input type =“submit”value =“搜索...”> – n1xn1x