有问题的公式从 Morningstar Direct 提取基金持有数据。如果我使用 Morningstar UI,它自己生成到我选择的 Excel 单元格的代码如下(一次 1 个基金):
=@MSHOLDING("US52469L6609";"ISIN";"CORR=C, ASCENDING=TRUE, HT=ALL,
WEIGHT=TRUE, FREQ=A, NAME=TRUE, SHOWHT=TRUE, SHOWCOUNTRY=FALSE")
然后可以在不使用 Morningstar UI 的情况下键入或复制该公式到单元格,并将数据拉到工作表中。但是,由于我想为多个(列表)基金执行此操作,因此我为它创建了这个 VBA 宏。我的代码如下:
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
我在代码的“ISIN”部分收到错误消息“预期:语句结束”。知道为什么会这样吗?
(我在项目上有双“”,因为它是一个变量,这就是我认为应该这样做的方式。其他不是我可以更改的公式中的变量。)
编辑:多亏了布赖恩,变量问题已经解决。现在,我在 =@MSHOLDING 公式中收到错误“运行时错误 1004:”。