Надстройка PI DataLink не загружена запланированной задачей

У меня есть книга Excel с некоторым кодом VBA, в которой используется функция PISampDat надстройки OSIsoft DataLink для извлечения нескольких столбцов данных. Рабочая книга запускается из пакетного файла, который, в свою очередь, запускается запланированной задачей 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
  • Опция "Программа / скрипт" содержит только имя командного файла
  • Опция "Начать с (необязательно)" содержит только путь к пакетному файлу

Есть идеи, как решить эту проблему?

0 ответов

В зависимости от конфигурации вашей запланированной задачи он может запускаться как системный пользователь, для которого профиль пользователя не имеет доступа к правильным надстройкам Excel. Также может быть, что задача выполняется как фоновая задача, когда потоки не имеют доступа к материалам пользовательского интерфейса... Есть много вещей, и это может быть сложно.

Я думаю, что вам, возможно, стоит сделать шаг назад и спросить себя, чего вы пытаетесь достичь? Есть много разных способов потреблять данные из PI System, и это действительно зависит от того, что вы пытаетесь сделать. Вы можете использовать.NET-код с AF SDK, который легче автоматизировать, чем Excel. Вы также можете использовать клиент ODBC с драйвером PI ODBC для запроса данных из PI System, что также проще автоматизировать. Есть также сценарии PowerShell для PI System, которые вы можете использовать... так много всего. Есть Посмотрите на PI разработчиков технологий и Вы можете найти другой более простой способ для извлечения данных.

Как только вы получите данные в плоском файле (например, csv), вы можете легко использовать их в Excel с обновлением данных, то же самое с powerbi.

Другие вопросы по тегам