Я понимаю, что это поздний ответ, но я думаю, что у меня есть решение.(Я пытался вызвать этот метод в c #, используя NetOffice, и получал ту же ошибку)
Похоже, что есть ошибка в Microsoft Powerpoint (по крайней мере, в v 2007 и 2010).Параметр PrintRange должен быть указан, потому что значение по умолчанию (0) недопустимо!
Таким образом, рабочий скрипт может выглядеть следующим образом:
Add-type -AssemblyName Office
Add-type -AssemblyName Microsoft.Office.Interop.PowerPoint
$p = new-object -comobject powerpoint.application
$p.visible = 1
$document = $p.presentations.open('somefile.ppt')
$ranges = $document.PrintOptions.Ranges
$range = $ranges.Add(1,1)
$document.ExportAsFixedFormat($Path,
[Microsoft.Office.Interop.PowerPoint.PpFixedFormatType]::ppFixedFormatTypePDF,
[Microsoft.Office.Interop.PowerPoint.PpFixedFormatIntent]::ppFixedFormatIntentScreen,
[Microsoft.Office.Core.MsoTriState]::msoFalse,
[Microsoft.Office.Interop.PowerPoint.PpPrintHandoutOrder]::ppPrintHandoutVerticalFirst,
[Microsoft.Office.Interop.PowerPoint.PpPrintOutputType]::ppPrintOutputSlides,
[Microsoft.Office.Core.MsoTriState]::msoFalse,
$range,
[Microsoft.Office.Interop.PowerPoint.PpPrintRangeType]::ppPrintAll,
[System.Reflection.Missing]::Value,
$true,
$true,
$true,
$true,
$false,
[System.Reflection.Missing]::Value)
обратите внимание, что параметр $ range теперь передан.
NB - этот ответ адаптирован из решения здесь: https://netoffice.codeplex.com/discussions/449288