股市数据 股票历史数据( 二 )


第二步 , 获取股票历史数据 。代码如下:
Private Function GetSource(sURL As String) As String
Dim oXHTTP As Object
Set oXHTTP = CreateObject("MSXML2.XMLHTTP")
oXHTTP.Open "GET" ,  sURL ,  False
oXHTTP.Send
GetSource = oXHTTP.responsetext
Set oXHTTP = Nothing
End Function
Sub 历史数据()
Dim objXML As Object
Dim txtContent As String
Dim i As Integer
Dim strCode As String
Dim gp As String
Dim kaishihang
Dim arr ,  arr1 ,  arr2 ,  arr3 ,  arr4 ,  arr5 ,  arr6 ,  arr7 ,  arr8 ,  arr9 ,  arr10 ,  arr11
On Error Resume Next
EndRow = Range("a65536").End(xlUp).Row
startRow = 4
If startRowRange(Cells(startRow ,  1) ,  Cells(EndRow ,  11)).Valuehttps://www.soozhuozhou.com/= ""
Else
Exit Sub
End If
Set objXML = CreateObject("Microsoft.XMLHTTP")
gp = [A2]
For h = 1 To 4
For m = 1 To 4
kaishihang = [A65535].End(xlUp).Row
nian = Replace(Str(Year(Now) + 1 - h) ,  " " ,  "")
jidu = Replace(Str(4 + 1 - m) ,  " " ,  "")
With objXML
.Open "GET" ,  "" + gp + ".html?year=" + nian + "season=" + jidu + "" ,  False
.Send
If objXML.Status = 200 Then
txtContent = .responsetext
arr = Split(txtContent ,  "'")
For i = 1 To UBound(arr)
arr1 = Split(arr(i) ,  "
Cells(i + kaishihang ,  1) = Right(Left(arr1(0) ,  10) ,  10)
arr2 = Split(arr1(1) ,  Chr(60))
Cells(i + kaishihang ,  2) = Mid(arr2(0) ,  InStr(arr2(0) ,  "") + 1)
arr3 = Split(arr1(2) ,  Chr(60))
Cells(i + kaishihang ,  3) = Mid(arr3(0) ,  InStr(arr3(0) ,  "") + 1)
arr4 = Split(arr1(3) ,  Chr(60))
Cells(i + kaishihang ,  4) = Mid(arr4(0) ,  InStr(arr4(0) ,  "") + 1)
arr5 = Split(arr1(4) ,  Chr(60))
Cells(i + kaishihang ,  5) = Mid(arr5(0) ,  InStr(arr5(0) ,  "") + 1)
arr6 = Split(arr1(5) ,  Chr(60))
Cells(i + kaishihang ,  6) = Mid(arr6(0) ,  InStr(arr6(0) ,  "") + 1)
arr7 = Split(arr1(6) ,  Chr(60))
Cells(i + kaishihang ,  7) = Mid(arr7(0) ,  InStr(arr7(0) ,  "") + 1)
arr8 = Split(arr1(7) ,  Chr(60))
Cells(i + kaishihang ,  8) = Mid(arr8(0) ,  InStr(arr8(0) ,  "") + 1)
arr9 = Split(arr1(8) ,  Chr(60))
Cells(i + kaishihang ,  9) = Mid(arr9(0) ,  InStr(arr9(0) ,  "") + 1)
arr10 = Split(arr1(9) ,  Chr(60))
Cells(i + kaishihang ,  10) = Mid(arr10(0) ,  InStr(arr10(0) ,  "") + 1)
arr11 = Split(arr1(10) ,  Chr(60))
Cells(i + kaishihang ,  11) = Mid(arr11(0) ,  InStr(arr11(0) ,  "") + 1)
Next i
End If
End With
Next m
Next h
Set objXML = Nothing
End Sub
第三步 , 获取上证历史数据 , 并获取所有股票的历史数据 。程序如下:
Sub 所有股票历史数据获取()
Application.ScreenUpdating = False
Dim s As String ,  gp As String ,  nian As String ,  jidu As String ,  s1 As String
Dim arr ,  arr1 ,  arr2 ,  arr3 ,  arr4 ,  arr5 ,  arr6 ,  arr7 ,  arr8 ,  arr9