我正在使用 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