2013-05-21 15 views
1

首先,我对编程比较陌生。我一直主要熟悉VBA。我之前在这里提过问题,到目前为止,答复非常有帮助,所以我再次尝试我的运气。if getelementby class

我要去这个网站:http://www.otcmarkets.com/stock-screener

我想我的脚本是这样说的:

if ElementClassName("listingOdd").innertext = "USA, NV" 
then GetElementsbyClassName("listingOddlistingOdd whiteSpaceNormal").innertext 

我也想它遍历并单击下一步按钮,这是这个网站的背后直到它完成: a href =“javascript:void(null);”>下一个& gt;/a

欢迎任何帮助,我一直在搜索过去的问题和看教程,不要问我是否在这个问题上没有认真地敲我的头。非常感谢提前

这是一些代码,我都试过了,并出现以下错误:“对象犯规支持此方法” 有从试验和错误

Sub t() 


Dim IE As Object 
Set IE = CreateObject("InternetExplorer.Application") 
IE.Visible = False 

IE.navigate "http://www.otcmarkets.com/stock-screener" 

Do 
DoEvents 
Loop Until IE.readyState = READYSTATE_COMPLETE 
Dim Doc As HTMLDocument 
Set Doc = IE.document 
Dim sDD As String 
Dim lnk As Variant 
sDD = Trim(Doc.GetElementbyClassName("listingOddlistingOdd whiteSpaceNormal").innerText) 
'If lnk.classame.innerText = "USA, NV" Then 
If lnk.innerText = "USA, NV" Then 
'If ElementClassName("listingOdd")(0).innerText = "USA, NV" Then 
'sDD 
'sDD = Trim(Doc.GetElementbyClassName("listingOddlistingOdd whiteSpaceNormal").innerText) 
MsgBox sDD 
End If 




End Sub 

对不起注释掉了很多意大利面代码,就像我说的我是新的

+0

'getElementsByClassName'发表一些实际的代码,你试过,和国家有什么错误(S)你... –

+0

更新蒂姆·威廉姆斯 –

回答

1

我并不十分清楚你想要得到什么(为什么不只是使用方便的“下载全部”链接在页面顶部?)

编辑 - 在工作表上放置单元格值 EDIT2 - 单击“下一个”链接。 编辑3 - 环

虽然这种事情是一个总兔子洞。

Sub Tester() 
Dim doc As Object 
Dim IE As Object, nxt 
Dim rng As Range, x As Integer 

    Set rng = ThisWorkbook.Sheets("sheet1").Range("A2") 
    Set IE = CreateObject("InternetExplorer.Application") 
    IE.Visible = True 
    IE.navigate "http://www.otcmarkets.com/stock-screener" 
    WaitForLoad IE 

    Set nxt = GetNext(IE) 
    Do While Not nxt Is Nothing 
     ExtractTableContent IE, rng 
     nxt.Click 
     WaitForLoad IE 
     Set nxt = GetNext(IE) 
    Loop 
End Sub 

Sub WaitForLoad(IE As Object) 
    Do: DoEvents: Loop Until IE.readyState = 4 'READYSTATE_COMPLETE 
    Application.Wait Now + TimeSerial(0, 0, 3) 
End Sub 
'copy table content 
Sub ExtractTableContent(ByRef IE As Object, ByRef rng As Range) 
    Dim tableDiv As Object, r As Object, rw As Object, x As Long 

    Set tableDiv = IE.document.getelementbyid("stockScreenerResults") 
    Set r = tableDiv.getelementsbytagname("table")(0).Rows 
    For Each rw In r 
     For x = 1 To rw.Cells.Length 
      rng.Offset(0, x - 1).Value = rw.Cells(x - 1).innerText 
     Next x 
     Set rng = rng.Offset(1, 0) 
    Next rw 
End Sub 

'find the link which takes you to the next page... 
Function GetNext(IE As Object) As Object 
    Dim links, l As Object, rv As Object, cn As Object 
    Set links = IE.document.getelementsbytagname("a") 
    For Each l In links 
     If l.innerText Like "*next*" Then 
     Set rv = l 
     Exit For 
     End If 
    Next l 
    Set GetNext = rv 
End Function 
+0

所提供的下载链接的问题是,它并没有给我只能将结果限制在内华达州,这给我提供了不完整的结果,因为它将我限制在2000个搜索结果中。我确实先尝试过。感谢您的耐心和时间回答。我给你信用=)再次感谢 –

+0

冒着无知的风险,我没有得到任何结果打印到我的电子表格中的单元格 –

+0

'Debug.Print'打印在调试窗口中,而不是在电子表格中。 –

相关问题