Author Posts

August 4, 2015 at 3:09 am

I want to run a PowerPoint Macro from a PowerShell script. If i try to run an Excel Macro it works, but if i try to run a PowerPoint Macro it says to me: "type must not be byval".

$ppt = new-object -comobject powerpoint.application
$pres = $ppt.Presentations.Open($pptSourceFilePath)
$tst = @('test')

August 4, 2015 at 6:26 am

It's not Powershell, it's the antiquated Office COM object that's being used. Look for examples on the web specifically running macros with VBA or another programming language, like this:

August 4, 2015 at 10:32 pm

Thank you. but i cant load an object library (.olb) in Powershell or i dont know how to load it. And as i said, with Excel it is no Problem to call the run method on the COM Object. But PowerPoint wants a safearray of params and this is the Problem. I cant get it to work, no matter what i do; always the same error: type must not be byref. Any Ideas :)?

February 23, 2016 at 9:22 am

Try explicitly passing parameter as type ref:

$ppt = new-object -comobject powerpoint.application
$pres = $ppt.Presentations.Open($pptSourceFilePath)
$tst = @('test')

You can also explicitly specify the macro file and module: