计划任务未加载PI DataLink加载项

时间:2019-05-16 07:07:13

标签: excel vba osisoft

我有一本带有一些VBA代码的Excel工作簿,它使用OSIsoft DataLink加载项的PISampDat函数提取多列数据。该工作簿由批处理文件运行,而批处理文件又由Windows计划任务触发。如果我手动运行工作簿或批处理文件,它会按预期运行,但是如果使用计划任务,则会出现以下错误:

  

1004:无法运行宏“ PISampDat”。宏可能不可用   在此工作簿中,否则可能禁用了所有宏。

“ PISampDat”不是宏,而是外接程序中函数的名称。代码如下:

ThisWorkbook.Sheets(SheetName).Range(Cells(5, PTTagNamesCol), Cells(RangeRowCount, PTTagNamesCol)) = Application.Run("PISampDat", TagName, EDate, SDate, "5m", 0, PiServer)

似乎由计划任务运行时,Excel并未加载DataLink加载项,因此无法识别函数名称。

更多详细信息:

  • 以管理员用户身份运行的计划任务,该任务对所有文件具有权限 和涉及的文件夹
  • “运行是否登录用户”选项 选择
  • 选择“以最高特权运行”选项
  • 为Windows Server 2012 R2配置
  • “程序/脚本”选项仅包含批处理文件名
  • “开始于(可选)”选项仅包含批处理文件路径

有什么办法解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

根据计划任务的配置,它可能以系统用户身份运行,该用户的用户资料无法访问正确的excel加载项。任务可能还作为后台任务运行,其中线程无法访问UI内容……有很多事情,而且可能很复杂。

我认为您可能需要退后一步,问自己要达到的目标? 有多种方法可以从PI System中使用数据,这实际上取决于您要执行的操作。您可以将.NET代码与AF SDK结合使用,它比excel易于自动化。同样,您可以将ODBC客户端与PI ODBC驱动程序一起使用,以从PI System中查询数据,这也更易于自动化。您还可以使用PI System的Powershell脚本……很多东西。看看PI Developer Technologies,您可能会发现另一种更简单的方法来提取数据。

一旦您以平面文件(例如csv)获取数据,则可以轻松地在excel中使用它   数据刷新,与powerbi相同。