VBA评估功能不起作用。错误2015

时间:2018-08-29 04:38:07

标签: excel vba excel-vba

我正在尝试将OsiSoft Pi Datalink与Excel VBA连接起来,并将输出放入变量中以进行进一步的VBA处理。

在excel单元格中运行命令时,效果很好,但是当我尝试在VBA中运行该命令时,出现“错误2015”

enter image description here

这是在单元格中正常工作的代码:

$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参考,它们似乎也是正确的:

enter image description here

在用户指南中没有可用的信息,我无法在Internet上找到正确地将VBA连接到Pi Datalink的信息。

我在stackoverflow上发现了这个问题,但没有解释问题:

Pulling data from PI DataLink using VBA

我可能确实缺少一些基本的东西,但似乎我正在VBA中执行与单元中完全相同的代码。单元格返回一个值,而VBA只是返回一个错误。

预先感谢您的帮助

1 个答案:

答案 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 & ")")

我没有库来测试您的确切代码,但是请尝试重写您的评估字符串以合并变量的值,并记住也要传入逗号。