最近,我正在学习使用excel宏在网站上进行搜索。我已经阅读了几个论坛主题,并想出了下面的代码。但是,当我到达该行时会出现错误
SearchBox(0).Value = SearchString
我试图删除(0),但同样出现了另一个错误。我现在很沮丧,想寻求您的专业建议。该代码在其他网站上也能正常工作。我应该如何更改它们以适应此站点?非常感谢!
P.S。我也想知道单击搜索按钮的方式。谢谢!
Sub Searchstockcode()
Dim SearchString As String
SearchString = "700"
Set ie = CreateObject("InternetExplorer.Application")
With ie
ie.Visible = True
End With
ie.Navigate "http://www.hkexnews.hk/listedco/listconews/advancedsearch/search_active_main.aspx"
While ie.ReadyState <> 4
DoEvents
Wend
Dim SearchBox As Object
Set SearchBox = ie.Document.GetElementsByName("ct100$txt_stock_code")
SearchBox(0).Value = SearchString
Dim SearchButton As Object
Set SearchButton = ie.Document.GetElementsByName
End Sub
关于, LLC
答案 0 :(得分:0)
我不知道您的名称选择是否是由于元素具有两个名称属性而引起的,但这似乎是可能的。
您可以使用以下内容。
对于搜索框,我使用其ID定位该元素。通常这在文档和最快的选择器方法上都是唯一的。
对于搜索按钮,我使用
的CSS属性+值选择器[src*='/image/search.gif']
这将根据元素的值src
的属性[]
对其进行定位。 *
表示包含。选择器会寻找一个src
属性,其值中包含/image/search.gif
。
您可以在此处观察属性:
Option Explicit
Sub Searchstockcode()
Dim SearchString As String, SearchBox As Object, SearchButton As Object, ie As Object
SearchString = "700"
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.navigate "http://www.hkexnews.hk/listedco/listconews/advancedsearch/search_active_main.aspx"
While ie.Busy Or ie.readyState < 4: DoEvents: Wend
Set SearchBox = ie.document.getElementById("ctl00_txt_stock_code")
SearchBox.Value = SearchString
Set SearchButton = ie.document.querySelector("[src*='/image/search.gif']")
SearchButton.Click
While ie.Busy Or ie.readyState < 4: DoEvents: Wend
Stop '<==Delete me
'other code
ie.Quit
End Sub