Вызов макросов Excel из Powershell с таймаутом - PullRequest
0 голосов
/ 03 октября 2018

спасибо за вашу помощь.

Я пытаюсь запустить макросы Excel через PowerShell и записать ход выполнения в некоторые файлы CSV.Проблема, с которой я сталкиваюсь, заключается в том, что макросы Excel зависают, и мне нужно добавить возможность тайм-аута.Мои исследования привели меня к убеждению, что я должен поместить свой ScriptBlock в задание, а затем выполнить проверку тайм-аута для каждого задания.Проблема, с которой я столкнулся, заключается в том, что ни один из кодов внутри задания, кажется, не работает должным образом, и я не могу пройти через него, чтобы отладить его.Я хочу, чтобы выполнялся код в задании или альтернативный метод тайм-аута.Мой код выглядит следующим образом:

import-csv $TestParamFile | % {
   $Succ = $false

   $SSlocation = $TDLocation + "\" + $_.Folder + "\" + $_.Spreadsheet

   $Job = Start-Job -Name RunTestSS -ScriptBlock {
      # Declare and open excel
      $excel = new-object -comobject excel.application

      #Open file in excel
      [Void]$excel.workbooks.open($SSlocation, $false)
      $workbook = $excel.ActiveWorkbook

      # Run test macro
      $excel.Run("$($_.Macro)", "1")
      $Succ = $worksheet.Range("Success").Value2

      # Save and close workbook
      $workbook.Save()
      $workbook.Close($false,$null,$false)  
      }

   # Wait for job to complete with timeout (in seconds)
   $Job | Wait-Job -Timeout 100

   # Check to see if any jobs are still running and stop them
   $Job | Where-Object {$_.State -ne "Completed"} | Stop-Job

   #Kill excel instance
   $excel.Quit()
   [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)
   Get-Process excel | Stop-Process -Force
   Remove-Variable excel
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...