使用VBA将来自多个网站的数据复制并粘贴到Excel中

时间:2015-03-07 20:36:09

标签: excel vba excel-vba web-scraping

我是VBA编码新手。我想要NSE Company tracker websites的一些数据。 我尝试使用下面的代码

Private Sub IE_Automation()
Dim R As Long
Dim IE As Object
Dim ieurl As String
Set IE = CreateObject("internetexplorer.application")

IE.Visible = True 'internet explorer run command
For *R = 2 To 10*
ieurl = "http://www.nseindia.com/companytracker/cmtracker.jsp?symbol=" & Sheets("Sheet1").Cells(*R*, 1)
IE.navigate ieurl 'internet url
Do
DoEvents
Loop While IE.Busy

IE.ExecWB 17, 2 'IE page selection command
IE.ExecWB 12, 0 'IE page copy command

Range("A2").Select
Sheets("Sheet2").PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:= _
        False 'IE page data paste command in excel

Next R

End Sub

请在 R 的地方使用以下脚本代码: MANAPPURAM, PDSMFL, MINDACORP, CIGNITITEC, SHEMAROO, SUPERHOUSE, SHARDACROP, 雪人, SBIN

当我执行上面的代码时,VBA仅粘贴第一个Scrip的数据,有时它会在复制粘贴代码时显示调试错误。如果我手动调试宏(使用F8键),它正在执行该过程。

我想将所有脚本(逐个)的数据复制并粘贴到excel中。

请帮我将网站上的数据废弃到excel中。

1 个答案:

答案 0 :(得分:0)

如果代码在调试模式下正确执行,问题可能只是调试模式,允许页面有更多时间实际加载。我发现在对正在加载的页面进行操作之前,最好检查.Busy.readyState

Do
  DoEvents
Loop While (IE.Busy Or IE.readyState <> READYSTATE_COMPLETE)

这可以放在单个代码行中,

Do While (IE.Busy Or IE.readyState <> READYSTATE_COMPLETE): DoEvents: Loop

READYSTATE_COMPLETE常量等于4.这些是在VBE的Microsoft Internet Controls参考中定义的。

更多信息readyState property