vba - VBA 评估功能不起作用。错误 2015
问题描述
我正在尝试将 OsiSoft Pi Datalink 与 Excel VBA 连接并将输出放入变量中以进行进一步的 VBA 处理。
在 excel 单元格中运行命令时,它工作正常,但是当我尝试在 VBA 中运行它时,我得到“错误 2015”</p>
这是在单元格中运行良好的代码:
= PITimeDat("PP2941FIC01_PV_S", "7/07/2018 11:01:58 AM", "", "interpolated")
将其转换为 VBA:
Sub getPiData()
Dim tagName As String
tagName = "PP2941FIC01_PV_S"
Dim timeStamp As String
timeStamp = "7/07/2018 11:01:58 AM"
Dim rootPath As String
rootPath = ""
Dim retrieveMode As String
retrieveMode = "interpolated"
Dim result As String
result = CStr(Application.Evaluate("=PITimeDat(tagName, timeStamp, rootPath, retrieveMode)"))
Debug.Print (result)
End Sub
我检查了 VBA 参考如下,它们似乎也正确:
用户指南中没有任何信息,或者我可以在互联网上找到用于将 VBA 正确连接到 Pi Datalink 的信息。
我在stackoverflow上找到了这个,但它没有解释这个问题:
我可能遗漏了一些非常基本的东西,但似乎我在 VBA 中执行与单元格中完全相同的代码。单元格返回一个值,而 VBA 只是返回一个错误。
在此先感谢您的帮助
解决方案
cyboashu提出的观点很好。但是,也可能是因为您的语法而收到此错误。
使用 时Evaluate
,您必须完全按照您希望它被评估的方式传递字符串。您的代码正在传递变量的名称而不是它们的值。如果我可以简化一个例子。以下代码将返回错误(在本例中为 2029,即 #NAME 错误):
Dim dat As Variant
Dim txt As String
txt = "25 December 1966"
dat = Application.Evaluate("=DateValue(txt)")
在此示例中,您需要创建字符串以便评估 的值,txt
如下所示:
Dim dat As Variant
Dim txt As String
txt = "25 December 1966"
dat = Application.Evaluate("=DateValue(""" & txt & """)")
我怀疑这是原因,因为如果所需字符串中缺少引号,则 Evaluate 将返回 2015 错误。例如,这将做到这一点:
Dim dat As Variant
Dim txt As String
txt = "25 December 1966"
dat = Application.Evaluate("=DateValue(" & txt & ")")
我没有库来测试您的确切代码,但请尝试重写您的评估字符串以合并变量的值,并记住也要传入引号。
推荐阅读
- sql - 如何使用表中的行创建临时表,但仅使用不匹配的行
- python - 如何从熊猫数据框中找到最小值和最大值以及对应的 x 值?
- reactjs - 使用解构状态来计算带有反应挂钩的新状态是否安全?
- reactjs - 反应和 SVG。适用于 JSX,在 Style 中使用时失败
- r - 如何在 R 中使用 ggplot2 将不同颜色放入多因素箱线图中?
- python - 有什么方法可以判断函数对象是 lambda 还是 def?
- node.js - Firebase 云函数突然返回@grpc 模块错误
- labview - LabVIEW:如何将计算出的簇值放入队列中?
- javascript - 正在搜索的项目取决于先前的结果
- java - 如何处理删除 DataModel 中的互连对象