0

我正在使用 Morningstar Direct Excel 插件将基金持有数据导入 Excel。该应用程序将一个公式插入到当前选定的单元格中,然后从 Morningstar Direct 中提取基金持有数据。插入的公式如下所示:

=@MSHOLDING("US52469L6609";"ISIN";"CORR=C, ASCENDING=TRUE, HT=ALL, 
WEIGHT=TRUE, FREQ=A, NAME=TRUE, SHOWHT=TRUE, SHOWCOUNTRY=FALSE")

因此,我可以为多个基金提取数据,而无需手动完成所有操作,我创建了以下 VBA 代码来执行多个提取。为了演示,该列表仅包含 2 个基金 ISIN 代码。

Public Sub Get_Fund_Holdings()

Dim item

For Each item In Array("US52469L6609", "US64128K8760")

    Sheets.Add
    ActiveSheet.Name = item
    
    ActiveSheet.Range("A1").Value = "Ticker"
    
    ActiveSheet.Range("B1").Formula = "=@MSHOLDING(""" & item & 
    """;""ISIN"";""CORR=C, ASCENDING=TRUE, HT=ALL, WEIGHT=TRUE, FREQ=A, 
    NAME=TRUE, SHOWHT=TRUE, SHOWCOUNTRY=FALSE"")"

    ActiveSheet.Range("A2").Value = item
    ActiveSheet.Range("A2").Select
    Selection.AutoFill Destination:=Range("A2:A" & _
    Range("B" & Rows.Count).End(xlUp).Row) 
  
Next item
    
End Sub

但是,当我尝试执行此代码时,出现以下错误:

“运行时错误 1004:应用程序定义的或对象定义的错误”

甚至可以使用 VBA 运行加载项公式吗?我应该使用 Application.Run 来执行这些公式吗?


我什至尝试使用 Application.Run,​​但它给我的只是“-N/A”

Sub App_test()

ActiveSheet.Range("B2") = Application.Run("MSHOLDING", "US52469L6609", "ISIN", _
"CORR=C, ASCENDING=TRUE, HT=ALL, WEIGHT=TRUE, FREQ=A, NAME=TRUE, SHOWHT=TRUE, SHOWCOUNTRY=FALSE")

End Sub
4

0 回答 0