Excel vba 读取上证指数
程序员文章站
2022-05-16 09:29:36
...
Public Sub 抓上海指数全部()
'删除上次结果sheet
delectsh
Dim ie, dmt, an, selectONE
Set ie = CreateObject("InternetExplorer.Application") '创建一个IE对象
With ie
.Visible = False '显示它
.navigate "http://vip.stock.finance.sina.com.cn/corp/go.php/vMS_MarketHistory/stockid/000001/type/S.phtml" '加载某个页面
Do Until .ReadyState = 4 '等待页面加载完毕
DoEvents
Loop
Set dmt = .document '将IE浏览器加载的页面文档,赋予dmt变量
Set selectONE = dmt.getElementsByName("year")
With selectONE
Set option_year = .Item(0)
For i = 0 To option_year.Length - 1
Dim year
year = option_year.Item(i).innerText
'创建年份sheet
newsheet (year)
抓上海指数按年 (year)
Next i
End With
End With
Set ie = Nothing
End Sub
Function 抓上海指数按年(year As String)
Dim URL, last_row, i
last_row = 0
Cells.Clear
For i = 1 To 4
'http://vip.stock.finance.sina.com.cn/corp/go.php/vMS_MarketHistory/stockid/000001/type/S.phtml?year=2012&jidu=2
URL = "http://vip.stock.finance.sina.com.cn/corp/go.php/vMS_MarketHistory/stockid/000001/type/S.phtml?year=" & year & "&jidu=" & i
Set sheet_year = Worksheets(year)
With sheet_year.QueryTables.Add(Connection:= _
"URL;" & URL, _
Destination:=sheet_year.Range("A" & last_row + 1))
.WebTables = "FundHoldSharesTable"
.Refresh BackgroundQuery:=False
End With
last_row = sheet_year.[A65536].End(xlUp).Row
Set sheet_year = Nothing
Next
End Function
Public Sub delectsh()
Dim c As Worksheet
For Each c In Worksheets
If Left(c.name, 3) <> "set" Then '这里的“set”区分大小写
Application.DisplayAlerts = False '删除时不用确认
c.Delete
End If
Next c
End Sub
Function newsheet(name As String)
sname = name
'Sheets(Sheets.Count).name
'abc = DateSerial(Left(sname, 4), Mid(sname, 5, 2), Right(sname, 2)) + 1
'sname = year(abc) & Format(Month(abc), "00") & Format(Day(abc), "00")
'===========================================================
Sheets.Add
ActiveSheet.name = sname
'===========================================================
End Function
上一篇: Jarvis OJ - pwn