【问题标题】:excel vba pulling income statement/balance sheet/cash flow via web queryexcel vba 通过网络查询提取损益表/资产负债表/现金流量
【发布时间】:2016-09-11 18:25:24
【问题描述】:

我能够使用链接“http://www.advfn.com/stock-market/NASDAQ/NVDA/financials?btn=annual_reports&mode=company_data”上的网络查询将财务报表导入 Excel。我将导入过程记录到一个宏中,并稍微修补了 vba 代码以使其运行。现在,我想根据单元格 A1 中的股票代码刷新导入的财务报表。但是,我得到一个下标超出范围错误,我似乎无法弄清楚为什么。请查看下面的代码并尽可能提供任何见解。

Sub finstate()
'
' finstate Macro
'
'
  With ActiveSheet.QueryTables.Add(Connection:= _
    "URL;http://www.advfn.com/stock-market/NASDAQ/" & Worksheets("Input").Range("A1").Value & "/financials?btn=annual_reports&mode=company_data" _
    , Destination:=Range("B2"))
    .Name = "financials?btn=annual_reports&mode=company_data"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = False
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .WebSelectionType = xlSpecifiedTables
    .WebFormatting = xlWebFormattingAll
    .WebTables = "6"
    .WebPreFormattedTextToColumns = True
    .WebConsecutiveDelimitersAsOne = True
    .WebSingleBlockTextImport = False
    .WebDisableDateRecognition = False
    .WebDisableRedirections = False
    .Refresh BackgroundQuery:=False
End With
End Sub

非常感谢!

【问题讨论】:

    标签: excel vba finance excel-web-query


    【解决方案1】:

    我认为这可能是您的参考,看起来您正在从输入表中读取代码值,但尝试写入活动表。 除了这种可能性之外,它似乎对我很有效。

    我添加了一个变量并测试当前工作表。 with 的第一行也发生了一些变化。

      sTicker = Range("A1").Value
      If sTicker = "" Then
        MsgBox "No value to look up"
        Exit Sub
      End If
    
      With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.advfn.com/stock-market/NASDAQ/" & sTicker & "/financials?btn=annual_reports&mode=company_data" _
        , Destination:=Range("B2"))
    

    【讨论】:

    • 非常感谢您的回复并指出参考问题!代码现在似乎正在运行,但我收到一条错误消息,内容为“无法打开advfn.com/stock-market/NASDAQ/msft/…。无法下载您请求的信息”。关于为什么会发生这种情况的任何线索?
    • 刚刚尝试并为我工作。也许尝试在 UCase() 中包装 sTicker = Range("A1").Value
    • 非常感谢!由于 Internet Explorer 设置,它之前无法正常工作,但现在可以正常运行了。!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 2022-11-13
    相关资源
    最近更新 更多