Is it possible to run PowersPoint Macros from PowerShell?

This topic contains 3 replies, has 3 voices, and was last updated by Profile photo of Jamie Garroch Jamie Garroch 1 year, 3 months ago.

  • Author
    Posts
  • #28158
    Profile photo of Florian Glock
    Florian Glock
    Participant

    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".
    Code:

    $ppt = new-object -comobject powerpoint.application
    $pres = $ppt.Presentations.Open($pptSourceFilePath)
    $tst = @('test')
    $pres.Application.Run("TestMain",$tst)
  • #28161
    Profile photo of Rob Simmers
    Rob Simmers
    Participant

    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: https://support.microsoft.com/en-us/kb/306682

  • #28175
    Profile photo of Florian Glock
    Florian Glock
    Participant

    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 :)?

  • #35571
    Profile photo of Jamie Garroch
    Jamie Garroch
    Participant

    Try explicitly passing parameter as type ref:

    $ppt = new-object -comobject powerpoint.application
    $pres = $ppt.Presentations.Open($pptSourceFilePath)
    $tst = @('test')
    $pres.Application.Run("TestMain",[ref]$tst)

    You can also explicitly specify the macro file and module:

    $ppt.Run("MyMacros.pptm!Module1.TestMain",[ref]$tst)

You must be logged in to reply to this topic.