添加新的Excel工作表时出现错误400

理想情况下,这个macros将循环遍历每个公司名称的列表,并为每个公司的信息创build一个新的选项卡,但是我为在这个macros的末尾创build一个新的选项卡而苦苦挣扎,因为它给了我错误400。

Sub getStockPrices() Dim DataSheet As Worksheet Dim EndDate As Date Dim StartDate As Date Dim Symbol As String Dim Interval As String Dim qurl As String Dim nQuery As Name Dim LastRow As Integer Application.ScreenUpdating = False Application.DisplayAlerts = False Application.Calculation = xlCalculationManual Sheets("data").Cells.Clear Set DataSheet = ActiveSheet StartDate = DataSheet.Range("startDate").Value EndDate = DataSheet.Range("endDate").Value Symbol = DataSheet.Range("ticker").Value Interval = DataSheet.Range("Interval").Value Sheets("data").Range("a1").CurrentRegion.ClearContents qurl = "http://ichart.finance.yahoo.com/table.csv?s=" & Symbol qurl = qurl & "&a=" & Month(StartDate) - 1 & "&b=" & Day(StartDate) & _ "&c=" & Year(StartDate) & "&d=" & Month(EndDate) - 1 & "&e=" & _ Day(EndDate) & "&f=" & Year(EndDate) & "&g=" & Interval & "&q=q&y=0&z=" & _ Symbol & "&x=.csv" QueryQuote: With Sheets("data").QueryTables.Add(Connection:="URL;" & qurl, Destination:=Sheets("data").Range("a1")) .BackgroundQuery = True .TablesOnlyFromHTML = False .Refresh BackgroundQuery:=False .SaveData = True End With Sheets("data").Range("a1").CurrentRegion.TextToColumns Destination:=Sheets("data").Range("a1"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _ Semicolon:=False, Comma:=True, Space:=False, other:=False Sheets("data").Columns("A:G").ColumnWidth = 12 End Sub 

带有启动macros的字段的图片。

这里是一张图片,其中包含启动宏的字段

我input股票行情,date范围,以及一天或一周的价格,然后调用Yahoo,然后用这个信息填充“数据”标签。 我有一种情况,我需要为几十家公司运行这个分析,但是基于我现在设置的方式,每次都需要创build一个新的表格并复制数据。

我如何循环公司股票代码和date范围列表,运行这个代码,将它放在一个新的表格中,然后命名表格,然后转到下一个公司?

或者至less,如何创build一个新标签并将其命名为刚刚运行的公司代码。

这是我的刺伤。 这期望find一个命名范围调用TickerList名为标准的工作表。 这是一个股票的符号列。 StartDate,EndDate和Interval位于每个符号右侧的单元格中。

在这里输入图像说明

 Sub getStockPrices() Dim DataSheet As Worksheet Dim CriteriaSheet As Worksheet Dim EndDate As Date Dim StartDate As Date Dim Symbol As String Dim Interval As String Dim qurl As String Dim LastRow As Integer Dim myCell As Range Application.ScreenUpdating = False Application.DisplayAlerts = False Application.Calculation = xlCalculationManual Set CriteriaSheet = ActiveWorkbook.Worksheets("Criteria") ' Iterate through the TickerList range ' creating a new sheet for each entry For Each myCell In CriteriaSheet.Range("TickerList") Symbol = myCell.Value StartDate = myCell.Offset(0, 1).Value EndDate = myCell.Offset(0, 2).Value Interval = myCell.Offset(0, 3).Value With ThisWorkbook Set DataSheet = .Sheets.Add(After:=.Sheets(.Sheets.Count)) DataSheet.Name = Symbol End With qurl = "http://ichart.finance.yahoo.com/table.csv?s=" & Symbol qurl = qurl & "&a=" & Month(StartDate) - 1 & "&b=" & Day(StartDate) & _ "&c=" & Year(StartDate) & "&d=" & Month(EndDate) - 1 & "&e=" & _ Day(EndDate) & "&f=" & Year(EndDate) & "&g=" & Interval & "&q=q&y=0&z=" & _ Symbol & "&x=.csv" With Sheets(Symbol).QueryTables.Add(Connection:="URL;" & qurl, Destination:=Sheets(Symbol).Range("a1")) .BackgroundQuery = True .TablesOnlyFromHTML = False .Refresh BackgroundQuery:=False .SaveData = True End With Sheets(Symbol).Range("a1").CurrentRegion.TextToColumns Destination:=Sheets(Symbol).Range("a1"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _ Semicolon:=False, Comma:=True, Space:=False, other:=False Sheets(Symbol).Columns("A:G").ColumnWidth = 12 Next myCell Application.ScreenUpdating = True Application.DisplayAlerts = True Application.Calculation = xlCalculationAutomatic End Sub