我正在尝试将OsiSoft Pi Datalink与Excel VBA连接起来,并将输出放入变量中以进行进一步的VBA处理。
在excel单元格中运行命令时,效果很好,但是当我尝试在VBA中运行该命令时,出现“错误2015”
这是在单元格中正常工作的代码:
$column_number = 5;
$rows = Excel::filter('chunk')->load('storage/app/public/upload/myfiles.xlsx')->chunk(250, function($data) use ($column_number)
{
foreach($data as $reader){
$reader->noHeading();
$reader->takeColumns($column_number);
$reader->setDateFormat('d-m-Y');
}
})->get();
将其转换为VBA:
= PITimeDat("PP2941FIC01_PV_S", "7/07/2018 11:01:58 AM", "", "interpolated")
我检查了以下VBA参考,它们似乎也是正确的:
在用户指南中没有可用的信息,我无法在Internet上找到正确地将VBA连接到Pi Datalink的信息。
我在stackoverflow上发现了这个问题,但没有解释问题:
Pulling data from PI DataLink using VBA
我可能确实缺少一些基本的东西,但似乎我正在VBA中执行与单元中完全相同的代码。单元格返回一个值,而VBA只是返回一个错误。
预先感谢您的帮助
答案 0 :(得分:2)
cyboashu提出的观点是一个很好的观点。不过,由于语法的原因,您可能还会收到此错误。
使用Evaluate
时,必须完全按照希望对其进行评估的方式传递字符串。您的代码正在传递变量的名称,而不是它们的值。如果我可以简化一个例子。以下代码将返回错误(在这种情况下为2029,这是#NAME错误):
Dim dat As Variant
Dim txt As String
txt = "25 December 1966"
dat = Application.Evaluate("=DateValue(txt)")
在此示例中,您将需要创建字符串,以便对txt
的 value 进行求值,如下所示:
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 & ")")
我没有库来测试您的确切代码,但是请尝试重写您的评估字符串以合并变量的值,并记住也要传入逗号。