【发布时间】:2020-07-02 15:37:34
【问题描述】:
我在运行 10.13.3 的 Mac 上使用 Excel v16.9 并尝试使用 Evaluate 函数,但它返回错误 Error 2015。
导致错误的行是:
temp = Evaluate(GetWebDataTest("https://query2.finance.yahoo.com/v10/finance/quoteSummary/IBM?modules=assetProfile", 269, 150))
当我单步执行代码时,GetWebDataTest 被正确评估,但当函数结束时,值不会返回到变量 test,而是显示Error 2015
GetWebDataTest 返回的值为:
"sector":"Technology","longBusinessSummary":"International Business Machines Corporation provides information technology (IT) products and services wo
这是 Mac 版 Excel 的错误还是我做错了什么。
更新:
在对该问题进行进一步调查后,我将其范围缩小为 Evaluate 无法返回字符串。考虑以下代码:
temp = Evaluate(RetText())
temp1 = Evaluate(RetNo())
Public Function RetText() As String
RetText = "Te"
End Function
Public Function RetNo()
RetNo = 5
End Function
运行时,temp 抛出错误 - Error 2029 而temp1 正确分配了值 5。
如果结果函数试图返回一个字符串,看起来Evaluate 会失败。
【问题讨论】:
-
GetWebDataTest 似乎正在截断部分文本。评估有 255 个字符的限制。这可能是错误吗?
-
@EmilyAlden:感谢您的建议,但
GetWebDataTest返回 150 个字符,因此在 Evaluate 的范围内 -
您期望在该文本上运行
Evaluate的结果是什么?如果您尝试解析 JSON,那么它不是这样做的。 -
GetWebDataTest... 以字符串形式保存,例如
var。我实际上在做的是传递Evaluate(var)并期望它返回函数的结果,在这种情况下是"sector....,如上所示。所以变量temp会保存函数返回的值 -
这不是 Evaluate 所做的。您最好更多使用像github.com/VBA-tools/VBA-JSON 这样的现有库来解析完整的 JSON 响应,然后从中提取您需要的内容。