0

有问题的公式从 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:”。

4

1 回答 1

0

您没有正确使用双引号。请参阅https://docs.microsoft.com/en-us/office/vba/access/concepts/criteria-expressions/include-quotation-marks-in-string-expressions

于 2021-11-10T20:42:53.097 回答