2017-10-10 167 views
1

我真的被困在试图写一块VBA代码,真的可以使用一些帮助!我想导航到特定的网站(http://www.boxofficemojo.com/),在搜索栏中输入一个值,然后点击“搜索”。我无法让我的代码正确地按下搜索按钮。HTML搜索栏点击excel

这里是我迄今:

Dim objIE As New InternetExplorer 
Dim Doc As HTMLDocument 
Dim oSearch As HTMLDivElement 
Dim oSearchButton As Object 
Dim SearchElement As MSHTML.IHTMLElementCollection 
Dim oResult As Object, Element As Object, myLink As Object 

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

Set oSearch = objIE.Document.forms("searchbox").elements("q") 
    oSearch.Value = Sheets("2016").Range("c3").Value 
Set oSearchButton = objIE.Document.forms("searchbox").getElementsByTagName("input") 

    objIE.Navigate oSearchButton 

现在,我的代码只需导航到谷歌搜索:[对象HTMLInputElement]

的搜索按钮的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> 
**<input type="submit" value="Search...">** 

有谁知道我在做什么错?非常感谢你!

+0

'getElementsByTagName'返回多个对象,并且您试图将其设置为单个对象。 – braX

+0

与你的问题没有关系,但你不应该指objIE块中的'objIE' – jsotola

回答

1

两件事。 正如评论中提到getElementsByTagName返回多个对象。在你的情况下,你想参考第二个像这样: objIE.Document.forms("searchbox").getElementsByTagName("input")(1)

其次,Navigate只需要IE浏览器的URL。你想单击按钮,所以只需要: objIE.Document.forms("searchbox").getElementsByTagName("input")(1).Click

+0

这非常有帮助,谢谢。但是仍然有些东西让我感到困惑:当我使用f8来浏览它时,这段代码会起作用。但是当我使用f5自动运行它时,它会将我带到不同的网站,而不是我想要的网站。我不能为了我的生活找出原因!有任何想法吗? – n1xn1x

+0

对不起,它适用于我。也许如果你提供有关可以帮助的错误的更多细节。 – xthestreams