PowerShell Разделение надстроек Excel на отдельные рабочие книги - PullRequest
0 голосов
/ 15 мая 2018

Я работаю над автоматизацией нескольких отчетов Excel, используя PowerShell и Windows Task Scheduler.Для правильной загрузки Excel нужны две надстройки, чтобы все наши отчеты работали.В некоторых отчетах используется одна из этих надстроек, в других - обе.

Надстройки - PI Datalink от OsiSoft, а другая - надстройка, разработанная моей компанией (назовем ее Добавить-in2).PIDatalink - это надстройка COM, а надстройка 2 - надстройка Excel.

В настоящее время я могу полностью автоматизировать любые отчеты, использующие только PI Datalink.Когда открывается Excel, все загружается нормально, отчет генерируется и отправляется по электронной почте, как и планировалось.

Для надстройки 2, когда я вручную загружаю надстройку в Excel, я могу нормально запустить любой макрос, и он отображается влента под раскрывающимся меню надстроек.Но когда я открываю тот же файл с помощью сценария PowerShell, Add-in2 открывается в одиночном экземпляре Excel (как если бы я вручную открыл файл .xla), и реальный файл для обновления обычно загружается в отдельную книгу вместе с PIЗагружена надстройка Datalink COM.

На основании всего этого я знаю, что проблема заключается в открытии книги из PowerShell.Одна мысль, которую мне пришлось объяснить, это то, что я определяю Excel как COM-объект в моем сценарии PS.Так что, возможно, это заставляет Excel загружать только другие COM-объекты в рабочую книгу и разделяет надстройки Excel, но я не уверен, правильно ли это или как это изменить.Я также добавлю, что когда происходит это разделение, меню надстроек из Excel доступно только в книге, в которую загружен надстройка2.В книге надстроек COM невозможно загрузить меню надстроек вручную.

Что в моем сценарии вызывает загрузку Excel таким образом?

Несколько элементов дляссылка: 1.) Существует версия надстройки COM для надстроек2, но мы знаем, что она не работает с автоматизацией 2.) Надстройка 2 действительно старая, поэтому я уверен, что отчасти виноват.Он не очень хорошо работает с новыми версиями Excel, но мы смогли заставить его работать.3.) PS Версия 5.1, Windows 10, Excel 2016.

Вот соответствующий раздел моего скрипта:

    $FilePath = "Filepath"

    # Create an Object Excel.Application using Com interface
    $objExcel = New-Object -ComObject Excel.Application

    # Enable the 'visible' property so the document opens in excel
    $objExcel.Visible = $true

    # Open the Excel file and save it in $WorkBook
    $WorkBook = $objExcel.Workbooks.Open($FilePath)

    # Run desired macros in Excel Sheet
    $objExcel.Run('Macro')

    #Close Workbook
    $WorkBook.Close($false)
    $objExcel.Quit()

    #Hide and kill Excel
    $objExcel.Visible = $false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...