Passing a variant through COM object via PowerShell to run a macro in PowerPoint

Question:

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:

I have put together a very basic PoC for PowerPoint in PowerShell:

Code:

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.

Answer:

Great question and not a lot of examples online as you say. I managed to strip your example down even further and successfully pass some text to a MsgBox in a PowerPoint Macro without really changing what you had.

The Macro in the file PowerShellTest.pptm saved in C:\Temp

The PowerShell script:

The Run method documentation link you provided mentions that the module name may be included so this worked for me too:

Source:

Passing a variant through COM object via PowerShell to run a macro in PowerPoint by licensed under CC BY-SA | With most appropriate answer!

Leave a Reply