Trying to string the title together was enough of a challenge...
I am trying to run some PowerPoint macros from PowerShell. I have gotten quite good at running macros from Powershell for Excel. When I run the macros on Excel, the Run() method from the COM object will take a variety of arguments, depending if the macro has any parameters. However on the other hand, the PowerPoint Run() method expects parameters, and I cannot work out how to pass them.
My macro is expecting one string to be passed through, I've googled profusely and come up short. I always get this error:
Error:
type must not be ByRef I have put together a very basic PoC for PowerPoint in PowerShell:
Code:
# PowerPoint test Add-type -AssemblyName office $PowerPoint = New-Object -comobject PowerPoint.Application $PowerPoint.Visible = [Microsoft.Office.Core.MsoTriState]::msoTrue $presentation2 = $PowerPoint.Presentations.open("C:\macros.pptm") $presentation = $PowerPoint.Presentations.open("C:\Test For Macros.pptx") $PowerPoint.run("macros.pptm!IAM",[ref]"Feb") $presentation.save() $presentation.close() $presentation2.close() $PowerPoint.quit() # extra clean up omitted The macro itself just moves some text across boxes, it works fine when run from PowerPoint.
Requirement:
I now want to automate this across multiple files and slides.
Documentation on the PowerPoint COM object Run method, showing the requirement for two parameters.