вызвать макрос powerpoint с аргументами из пакета - PullRequest
1 голос
/ 27 марта 2012

Я хочу вызвать макрос powerpoint из моего командного файла, как этот

"c:\program files\microsoft office\office14\POWERPNT.exe" /M x5_template.pptm macro_name(argument)

Проблема в том, что он работает без аргументов, но мое требование - передать аргумент.Любые слова о том, как передать аргумент?

Ответы [ 2 ]

1 голос
/ 27 марта 2012

Другой подход: написать EXE, который принимает ваши параметры в командной строке.Затем EXE вызывает PowerPoint, вызывает макрос и передает все необходимые параметры.Вот фрагмент кода VB, который может помочь:

Dim oPPTapp As Object
Set oPPTapp = New PowerPoint.Application

' make it visible if need be
oPPTapp.Visible = True  

If Err.Number <> 0 Then
    oPPTapp.Quit
    Set oPPTapp = Nothing
    Exit Sub
End If

' Call PPT VBA subroutine using Parameter, which you've
' parsed from the command line
oPPTapp.Run "NameOfSubRoutine", Parameter

Вы могли бы сделать его еще более универсальным, если бы использовали первый параметр командной строки parm в качестве имени макроса для запуска, а затем передали все остальные параметры в качествепараметр (ы)

0 голосов
/ 27 марта 2012

AFAIK вы не можете.

Но я использую следующую стратегию для решения некоторых очень простых случаев. Это может быть недостаточно для ваших нужд, поскольку требует предварительного планирования всех возможных параметров.

Предположим, у меня есть макрос ChangeAllFont(newfont as String), который принимает один параметр String.

Я объявляю несколько служебных макросов, которые вызывают макрос с некоторыми желаемыми параметрами. Например,

Sub ChangeAllFontArial()
 Call ChangeAllFont("Arial")
End Sub

и

Sub ChangeAllFontTimes()
 Call ChangeAllFont("Times New Roman")
End Sub

А потом я мог бы позже вызвать powerpoint либо как

POWERPNT /M template.ppt ChangeAllFontArial

или

POWERPNT /M template.ppt ChangeAllFontTimes
...