Cercando di stringa il titolo insieme era abbastanza di una sfida ...Passando attraverso una variante oggetto COM tramite PowerShell per eseguire una macro in PowerPoint
Sto cercando di eseguire alcune macro di PowerPoint da PowerShell. Sono diventato abbastanza bravo a eseguire macro da PowerShell per Excel. Quando eseguo le macro su Excel, il metodo Run() dall'oggetto COM prenderà una serie di argomenti, a seconda che la macro abbia qualche parametro. Tuttavia, d'altra parte, il metodo Run() di PowerPoint si aspetta parametri e non riesco a capire come passarli.
La mia macro si aspetta che una stringa venga passata attraverso, io ho cercato su Google in modo profuso e ho finito corto. Ho sempre trovato questo errore:
Errore:
type must not be ByRef
ho messo insieme un PoC molto di base per PowerPoint in PowerShell:
Codice:
# 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
Il la stessa macro sposta semplicemente del testo attraverso le finestre, funziona bene quando viene eseguita da PowerPoint.
Requisito:
Ora voglio automatizzare questo in più file e diapositive.
Documentation on the PowerPoint COM object Run method, che mostra il requisito per due parametri.
Puoi postare la macro nel pptm (almeno la dichiarazione del sub)?Puoi dirci che tipo di riferimenti (Strumenti> Riferimenti) sono inclusi in esso? Puoi provare che (1) puoi mostrare una finestra di messaggio all'inizio della macro (2) Un'altra macro con gli stessi tipi di argomenti può essere eseguita dallo stesso file (3) Un'altra macro dallo stesso file senza argomenti può essere correre? (4) Qualunque macro dai file pptm può essere eseguita da PowerShell sul tuo computer? – z32a7ul
Ho chiesto a questi perché la mia ipotesi è che l'errore non si verifica quando i parametri vengono passati alla Macro ma in seguito, e un'eccezione viene respinta e catturata infine da PowerShell. – z32a7ul