Powershell для ожидания выполнения макроса в Excel - PullRequest
0 голосов
/ 18 декабря 2018

Я использую очень простой PowerShell, чтобы открыть файл Excel, запустить макрос и сохранить файл.

Макрос - это кнопка REFRESH ALL на вкладке DATA.

Моя проблема в том, что Excel завис на этапе сохранения, потому что REFRESH ALL никогда не завершается.

Если я добавлю ПАУЗУ между командами.Я могу нормально прогрессировать без проблем.

clear

$file = "\\website\folder\file.xlsm"

$displayname = $File.split("\")[$File.split("\").count-1]

Write-Host "Creating Excel Instance for $displayname"

$Excel = New-Object -ComObject Excel.Application

Write-Host "Opening $displayname"

$Excel.Visible = $True

$Excel.StatusBar = "Opening the file... Please be patient..." 

$Workbook = $Excel.Workbooks.Open($file)

Write-Host "Running Refresh Query"

$Excel.StatusBar = $False

$Excel.Run("Refresh_All")

PAUSE ## This pause is needed in order to wait the Macro to happen

Write-Host "Saving $displayname" 

$Workbook.Save()

Write-Host "Close Excel Instance"

$Excel.Quit()

Если попытаться прочитать статус $ excel.Ready ... но он всегда готов ...

Я ищу способпрочитать строку состояния и распознать сообщение ЗАПУСК ФОНОВОГО ЗАПРОСА и сохранить файл, когда он будет завершен.

Любая подсказка?

1 Ответ

0 голосов
/ 18 декабря 2018

Я нашел решение ...

Решение: "Перейдите на вкладку данных, нажмите на соединения в группе соединений, нажмите на КАЖДОЕ соединение и выберите свойства, снимите флажок" Включить фон "обновить «»(tylerlohman@gmail.com, pcreview, 2013).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...