Можно ли открыть лист Excel в одном скрипте Powershell, а затем передать лист экземпляр другому скрипту?
Что я пробовал:
Скрипт 1 (основной скрипт)
$Excel = New-Object -comobject Excel.Application
$Workbook = $Excel.Workbooks.Open("$PSScriptRoot\MyExcelFile.xlsx")
$WorksheetMagic = $Workbook.worksheets | Where-Object {$_.Name -eq "MY TAB NAME"}
& .\$DynamicScriptNr2 -OptionalParam $WorksheetMagic
Скрипт 2
param (
[Worksheet] $WorksheetMagic
)
При запуске появляется следующая ошибка:
Unable to find type [Worksheet].
Я также пробовал другие типы, такие как Excel.Worksheet
, Excel.Application.Worksheet
и Object
. Ни одна из этих работ - ну, Object
вид работ, пока я не попытаюсь использовать параметр переменная , тогда он не будет работать.
Может ли это быть сделано?
Единственный другой вариант, который я вижу, заключается в том, что мне нужно сохранить и закрыть Excel в первом сценарии, прежде чем вызывать второй сценарий и затем открывать его там. Я бы хотел этого избежать, так как после завершения сценариев будет сделано МНОГИЕ вызовы, и его открытие и закрытие все время будет медленным.
Решение
Играя с решением, предоставленным t1meless, я обнаружил, что переменные в первом скрипте доступны во втором скрипте, без необходимости передавать какие-либо параметры вообще ... не то поведение, которое я ожидал.