问题描述
我正在尝试创建一个可以从雅虎财经检索历史股票数据的工作表。该代码在六七个月前无需 365 订阅即可运行。我发现它现在不起作用。这是我的代码:
Sub Button4_Click()
Dim DataSheet As Worksheet
Dim EndDate As Date
Dim StartDate As Date
Dim Symbol As String
Dim qurl As String
Dim SD As String
Dim ED As String
Application.ScreenUpdating = False
Application.displayAlerts = False
Application.Calculation = xlCalculationManual
Set DataSheet = ActiveSheet
StartDate = DataSheet.Range("B1").Value
EndDate = DataSheet.Range("B2").Value
Symbol = DataSheet.Range("B3").Value
Range("C7").CurrentRegion.ClearContents
SD = DateDiff("s","1/1/1970",StartDate)
ED = DateDiff("s",EndDate)
qurl = "https://query1.finance.yahoo.com/v7/finance/download/" & Symbol & "?period1=" & SD & "&period2=" & ED & "&interval=1d&events=history&includeAdjustedClose=true"
With DataSheet.QueryTables.Add(Connection:="URL;" & qurl,Destination:=DataSheet.Range("C7"))
.BackgroundQuery = True
.TablesOnlyFromHTML = False
.Refresh BackgroundQuery:=False
.SaveData = True
End With
Range("C7").CurrentRegion.TextToColumns Destination:=Range("C7"),DataType:=xlDelimited,_
TextQualifier:=xlDoubleQuote,ConsecutiveDelimiter:=False,Tab:=True,_
Semicolon:=False,Comma:=True,Space:=False,other:=False
Range(Range("C7"),Range("C7").End(xlDown)).NumberFormat = "mmm d/yy"
Range(Range("D7"),Range("G7").End(xlDown)).NumberFormat = "0.00"
Range(Range("H7"),Range("H7").End(xlDown)).NumberFormat = "0.00"
Range(Range("I7"),Range("I7").End(xlDown)).NumberFormat = "0,000"
'Worksheets("Grab data").Range("C7:xlDown").Select
Application.Calculation = xlCalculationAutomatic
End Sub
无法打开网址。并且互联网无法返回您请求的对象。
非常感谢您的帮助!
解决方法
发现此代码适用于 mac(没有 365 订阅)但不适用于 wondows。拥有 365 订阅的 Windows 只需使用网络查询即可快速获取。